prototype the functions