fix error.New with fmt.Errorf and add program_test.go