updated requirements, plus changes for readability