added requirements
restructure