Update gitignore
Refactor architecture
Update documentation