Major overhaul in preparation for Version 3.0.0