starting to separate files
further modularization