main class
minor fixes
general test cases
edge cases