Template engine abstraction layer