add some new files, break everything out to be unit tested!