added bunch of tests. All pass