Almost done, but needs a little more refinement