Separating TARDIS abstraction from implementation