refactored code, organized files into sub-folders, created uni-tests