DONE : rethink the architecture
TODO : create interfaces for the application