Refactor  & decoupling