Finish basic requirements and add tests