Refactor project

Projeto completamente refatorado. Ainda pode ser organizado mais ainda
se der tempo.