refactor - build component