all finished, just need tests