added function pointers