Define interfaces and abstract classes for scheduling

Change-Id: I0f38b69d03ba75a6954d74bc5bcfbed0e0c485ab