Refactored Input recognition to be more generic and allow for controllers