Fully implemented, Still need more test

clean up some methods too