remove function now handles m_root properly