close to getting IO passing I think