add: template procedure