[#60082842] Tidy template handling from Vapp

* Split into own class