abstract class makes more sense than interface here
keep track of the last runtime
revert runtime checker - we'll add a new class for this. renaming refactor, with namespaces we can have less redundant class names