add template pattern in DAL