Abstracted everything in the temporal package to interfaces