restructured view into multiple template components