#56: Make P1 an abstract class to maintain consistency.  Instantiate using P.lazy