Made lots of changes and tested individual methods