begin to refatorize