much of the way but it can't quite infer it