By not using call_user_func everywhere it is now faster.