a big refactor to abstraction of schedulable