re-using code
cleaning up