Initial commit of complete code prior to building web app, still needs to be cleaned up