finished implementing, tests needed