Added unit testing framework (gtest), refactored code to be more testable, getting rid of static classes.