updates and broken out into a few more files