Style police: Phase[ResultType] -> Phase[O]

It is recommended that type variables use a single letter, so that it
is possible to tell type variables and type instantiations apart.