support custom template