Rafactor  to be lazily applied