wip
addressed findbugs issues

used jsr305 annotations to show possible null values
some unittests written, lots of refactoring and making it pretier
findbugs fixings
Refactoring and making it look nicer