Refactored all timer code and created a global (to the CM object) loop where we can run other stuff besides the timers