finish implementation now turning into tests