added unit tests, corrected some mistakes, need more unit tests
18 files changed