adapted structure to work well with template