rewritten p1_derived, kind of