Code cleanup. Added more tests.
9 files changed