refactor/structured