Refactored ISolver interface and added abstract solver class