Abstraction and implementation is separated