doing some refacotring