added quite a few tests - all pass now