updated solution 30