Create a task which abstracts the act of scheduling and implementing a runnable. Refactor common classes to use this task class now.