finished implementing, added tests