remove call_user_func to allow pass $props by reference