add template for implementation