rafactor again