add prototypes to handle signal functions