expanded incomplete function prototypes