tpl structure refactor