Refactor file structure and rename;
add tests;