datamodel and templating functions are fixed and fully functional
just to add some generality