probably we should be using `call_user_func` or `call_user_func_array`, but I'm ok with this like that, as long as we keep the methods in protected/private mode.