Initial refactor for version 0.4.x