add function prototypes