Decouple the page controller from the portlet by introducing a content provider abstraction