refactored page and visual component classes