complted tests, mostly, one bug. Closes #13, Closes #14, Closes #15, Closes #16