adding working solver