function pointer shit implemented not tested, pushing for consistency