decouple template