Re-implemented for 2.0