basically the init() method was split into a finishInit() method which fills the data structures allocated in the constructor with meaningful data and into applyInitialSolution() which does just that (and no more!)