- need to write some decent test cases
