implementation template