Big Refactor. Naming convention and architecture