Terminal abstraction with a default implementation