Component oriented refactor