Refactored and improved documentation
Renamed and added unit tests
Renamed files