function prototypes & variables