IBuySpy, was not implemented in an OOP style. It uses mostly static methods in its "components" which are really just data access code and are embedded right in the web project. In mojoPortal I have already separated the layers cleanly allowing for interchangeable data layers. I wrote the Blog Module in an OOP style and plan to re-write the other modules in the same fashion. In particular the ModuleSettings and ModuleItems really reperesent the same thing and have overlapping properties that map to the same row in the Modules table. Same thing with the TabSettings and TabItem they will be combined into one class. I also plan to re-name Tab to Page and Portal to Site as I believe they are more intuitive conceptual abstractions. I've never liked the DesktopDefault.aspx page and plan to make that just Default.aspx. I'm not really focused on supporting mobile devices at this point but if I do I'm pondering a separate web site implementation since I think of the whole web site as a presentation layer. I could easily create a thinner presentation layer using the same business objects and I make no assumption at this point that it would be easier to design one site to handle all devices. Then again, maybe that will just be part of a skinning aproach, who knows.