interface and 2 implementation
classes