better template structure, more interface