functional prototypes