Created a more robust input system