refactor code into multiple files and tests