Spec files and some documentation

Got some test cases done, however, a lot of methods are incomplete.