adding forward solver and tests