Architecture

TODO explain design decision and main classes