structure refactoried