added first attempt at a timed loop based controller to allow for multiple inputs and for actions to occur without blocking on input