2nd iteration
cleaning up