page framework