Initial commit. Tests are failing, also need more.