working on architecture and programming to interfaces