major refactorings
more testcases