Redefinition of interface for solver. Now we have a few methods (pre_process, post_process, apply_algorithm, etc.) that need be redefinied across the hierarchy