Cache delegate to avoid using reflection every state change