Seems bug free; needs cleaned up