complete
in progress; #6
adds test cases;