fix: functions are now unique types and require casting to function pointers