#9 settings page framework