Code cleanup. Added more tests.
15 files changed