Initial refactor for 2.0.0