big change, change interface to template, everything still OK