API must be more complex, to deal with temporal constraints. Base class done, rest need update. Compile broken atm.