It's a bit lame that so much code is duplicated between S1 and S2. Any time a change is made to the style systems it must happen twice. It seems that S1 should use S2 in some way, to cut down on the duplication. I think the path of least resistance is to make the S1 page constructors call the S2 data structure constructors (LJ::S2::RecentPage, etc) and then build the views based on the returned objects rather than fetching/preparing the data themselves. S1 wouldn't really be using S2, but rather just using the data-preparing stuff from LJ::S2. In most (all?) cases the S2 data is a superset of the S1 data, so this shouldn't be a massive task.