function templates

initial drop for function templates