renaming, cleaning up and requirements added