all done! 99% (need to clean up code)