bind: make the default name prefix empty on ObjC

Since generated names now have their package names prefixed, the
extra prefix, "Go", is both confusing and counter-productive to
making the generated ObjC code look like any other native code.

Change the default to the empty prefix, while preserving support
for an explicit prefix if needed.

This is a backwards incompatible change; to keep the old behaviour,
specify "-prefix Go" to the gobind or gomobile command.

While we're here, fix the Ivy example for the recent change in
error returns.

Change-Id: I7fef4a92a18ddadee972ccf359652e3b31624f33
Reviewed-on: https://go-review.googlesource.com/34643
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/bind/bind_test.go b/bind/bind_test.go
index c9b8522..73bca05 100644
--- a/bind/bind_test.go
+++ b/bind/bind_test.go
@@ -130,7 +130,6 @@
 
 		var buf bytes.Buffer
 		g := &ObjcGen{
-			Prefix: "Go",
 			Generator: &Generator{
 				Printer: &Printer{Buf: &buf, IndentEach: []byte("\t")},
 				Fset:    fset,
diff --git a/bind/genobjc.go b/bind/genobjc.go
index 94a8835..d374974 100644
--- a/bind/genobjc.go
+++ b/bind/genobjc.go
@@ -86,7 +86,7 @@
 
 func (g *ObjcGen) namePrefixOf(pkg *types.Package) string {
 	if pkg == nil {
-		return "GoUniverse"
+		return "Universe"
 	}
 	p := g.Prefix
 	return p + strings.Title(pkg.Name())
@@ -137,7 +137,9 @@
 	for _, m := range g.modules {
 		g.Printf("@import %s;\n", m)
 	}
-	g.Printf("#include \"GoUniverse.objc.h\"\n\n")
+	if g.Pkg != nil {
+		g.Printf("#include \"Universe.objc.h\"\n\n")
+	}
 
 	if g.Pkg != nil {
 		for _, pkg := range g.Pkg.Imports() {
@@ -236,7 +238,7 @@
 
 func (g *ObjcGen) gobindOpts() string {
 	opts := []string{"-lang=objc"}
-	if g.Prefix != "Go" {
+	if g.Prefix != "" {
 		opts = append(opts, fmt.Sprintf("-prefix=%q", g.Prefix))
 	}
 	return strings.Join(opts, " ")
diff --git a/bind/objc/SeqTest.m b/bind/objc/SeqTest.m
index d376bc9..91f2468 100644
--- a/bind/objc/SeqTest.m
+++ b/bind/objc/SeqTest.m
@@ -9,7 +9,7 @@
 #import "testpkg/Testpkg.h"
 
 // Objective-C implementation of testpkg.I.
-@interface Number : NSObject <GoTestpkgI2> {
+@interface Number : NSObject <TestpkgI2> {
 }
 @property int32_t value;
 
@@ -57,22 +57,22 @@
 @end
 
 // Objective-C implementation of testpkg.NullTest.
-@interface NullTest : NSObject <GoTestpkgNullTest> {
+@interface NullTest : NSObject <TestpkgNullTest> {
 }
 
-- (GoTestpkgNullTest *)null;
+- (TestpkgNullTest *)null;
 @end
 
 @implementation NullTest {
 }
 
-- (GoTestpkgNullTest *)null {
+- (TestpkgNullTest *)null {
   return nil;
 }
 @end
 
 // Objective-C implementation of testpkg.InterfaceDupper.
-@interface IDup : NSObject <GoTestpkgInterfaceDupper> {
+@interface IDup : NSObject <TestpkgInterfaceDupper> {
 }
 
 @end
@@ -80,13 +80,13 @@
 @implementation IDup {
 }
 
-- (id<GoTestpkgInterface>)iDup:(id<GoTestpkgInterface>)i {
+- (id<TestpkgInterface>)iDup:(id<TestpkgInterface>)i {
   return i;
 }
 @end
 
 // Objective-C implementation of testpkg.ConcreteDupper.
-@interface CDup : NSObject <GoTestpkgConcreteDupper> {
+@interface CDup : NSObject <TestpkgConcreteDupper> {
 }
 
 @end
@@ -94,13 +94,13 @@
 @implementation CDup {
 }
 
-- (GoTestpkgConcrete *)cDup:(GoTestpkgConcrete *)c {
+- (TestpkgConcrete *)cDup:(TestpkgConcrete *)c {
   return c;
 }
 @end
 
 // Objective-C implementation of testpkg.EmptyThrower.
-@interface EmptyErrorer: NSObject <GoTestpkgEmptyErrorer> {
+@interface EmptyErrorer: NSObject <TestpkgEmptyErrorer> {
 }
 
 @end
@@ -109,8 +109,8 @@
 }
 
 - (BOOL)emptyError:(NSError **)error {
-    *error = [NSError errorWithDomain:@"SeqTest" code:1 userInfo:NULL];
-    return NO;
+	*error = [NSError errorWithDomain:@"SeqTest" code:1 userInfo:NULL];
+	return NO;
 }
 @end
 
@@ -121,224 +121,222 @@
 @implementation tests
 
 - (void)setUp {
-    [super setUp];
-    // Put setup code here. This method is called before the invocation of each test method in the class.
+	[super setUp];
 }
 
 - (void)tearDown {
-    // Put teardown code here. This method is called after the invocation of each test method in the class.
-    [super tearDown];
+	[super tearDown];
 }
 
 - (void)testBasics {
-    GoTestpkgHi();
+	TestpkgHi();
 
-    GoTestpkgInt(42);
+	TestpkgInt(42);
 }
 
 - (void)testAdd {
-    int64_t sum = GoTestpkgAdd(31, 21);
-    XCTAssertEqual(sum, 52, @"GoTestpkgSum(31, 21) = %lld, want 52\n", sum);
+	int64_t sum = TestpkgAdd(31, 21);
+	XCTAssertEqual(sum, 52, @"TestpkgSum(31, 21) = %lld, want 52\n", sum);
 }
 
 - (void)testHello:(NSString *)input {
-    NSString *got = GoTestpkgAppendHello(input);
-    NSString *want = [NSString stringWithFormat:@"Hello, %@!", input];
-    XCTAssertEqualObjects(got, want, @"want %@\nGoTestpkgHello(%@)= %@", want, input, got);
+	NSString *got = TestpkgAppendHello(input);
+	NSString *want = [NSString stringWithFormat:@"Hello, %@!", input];
+	XCTAssertEqualObjects(got, want, @"want %@\nTestpkgHello(%@)= %@", want, input, got);
 }
 
 - (void)testHellos {
-    [self testHello:@"세계"]; // korean, utf-8, world.
-    unichar t[] = {
-        0xD83D, 0xDCA9,
-    }; // utf-16, pile of poo.
-    [self testHello:[NSString stringWithCharacters:t length:2]];
+	[self testHello:@"세계"]; // korean, utf-8, world.
+	unichar t[] = {
+		0xD83D, 0xDCA9,
+	}; // utf-16, pile of poo.
+	[self testHello:[NSString stringWithCharacters:t length:2]];
 }
 
 - (void)testString {
-    NSString *input = @"";
-    NSString *got = GoTestpkgStrDup(input);
-    XCTAssertEqualObjects(got, input, @"want %@\nGoTestpkgEcho(%@)= %@", input, input, got);
+	NSString *input = @"";
+	NSString *got = TestpkgStrDup(input);
+	XCTAssertEqualObjects(got, input, @"want %@\nTestpkgEcho(%@)= %@", input, input, got);
 
-    input = @"FOO";
-    got = GoTestpkgStrDup(input);
-    XCTAssertEqualObjects(got, input, @"want %@\nGoTestpkgEcho(%@)= %@", input, input, got);
+	input = @"FOO";
+	got = TestpkgStrDup(input);
+	XCTAssertEqualObjects(got, input, @"want %@\nTestpkgEcho(%@)= %@", input, input, got);
 }
 
 - (void)testStruct {
-    GoTestpkgS2 *s = GoTestpkgNewS2(10.0, 100.0);
-    XCTAssertNotNil(s, @"GoTestpkgNewS2 returned NULL");
+	TestpkgS2 *s = TestpkgNewS2(10.0, 100.0);
+	XCTAssertNotNil(s, @"TestpkgNewS2 returned NULL");
 
-    double x = [s x];
-    double y = [s y];
-    double sum = [s sum];
-    XCTAssertTrue(x == 10.0 && y == 100.0 && sum == 110.0,
-            @"GoTestpkgS2(10.0, 100.0).X=%f Y=%f SUM=%f; want 10, 100, 110", x, y, sum);
+	double x = [s x];
+	double y = [s y];
+	double sum = [s sum];
+	XCTAssertTrue(x == 10.0 && y == 100.0 && sum == 110.0,
+			@"TestpkgS2(10.0, 100.0).X=%f Y=%f SUM=%f; want 10, 100, 110", x, y, sum);
 
-    double sum2 = GoTestpkgCallSSum(s);
-    XCTAssertEqual(sum, sum2, @"GoTestpkgCallSSum(s)=%f; want %f as returned by s.Sum", sum2, sum);
+	double sum2 = TestpkgCallSSum(s);
+	XCTAssertEqual(sum, sum2, @"TestpkgCallSSum(s)=%f; want %f as returned by s.Sum", sum2, sum);
 
-    [s setX:7];
-    [s setY:70];
-    x = [s x];
-    y = [s y];
-    sum = [s sum];
-    XCTAssertTrue(x == 7 && y == 70 && sum == 77,
-            @"GoTestpkgS2(7, 70).X=%f Y=%f SUM=%f; want 7, 70, 77", x, y, sum);
+	[s setX:7];
+	[s setY:70];
+	x = [s x];
+	y = [s y];
+	sum = [s sum];
+	XCTAssertTrue(x == 7 && y == 70 && sum == 77,
+		@"TestpkgS2(7, 70).X=%f Y=%f SUM=%f; want 7, 70, 77", x, y, sum);
 
-    NSString *first = @"trytwotested";
-    NSString *second = @"test";
-    NSString *got = [s tryTwoStrings:first second:second];
-    NSString *want = [first stringByAppendingString:second];
-    XCTAssertEqualObjects(got, want, @"GoTestpkgS_TryTwoStrings(%@, %@)= %@; want %@", first, second, got, want);
+	NSString *first = @"trytwotested";
+	NSString *second = @"test";
+	NSString *got = [s tryTwoStrings:first second:second];
+	NSString *want = [first stringByAppendingString:second];
+	XCTAssertEqualObjects(got, want, @"TestpkgS_TryTwoStrings(%@, %@)= %@; want %@", first, second, got, want);
 }
 
 - (void)testCollectS {
-    @autoreleasepool {
-        [self testStruct];
-    }
+	@autoreleasepool {
+		[self testStruct];
+	}
 
-    GoTestpkgGC();
-    long numS = GoTestpkgCollectS2(
-            1, 10); // within 10 seconds, collect the S used in testStruct.
-    XCTAssertEqual(numS, 1, @"%ld S objects were collected; S used in testStruct is supposed to "
-                @"be collected.",
-                numS);
+	TestpkgGC();
+	long numS = TestpkgCollectS2(
+		1, 10); // within 10 seconds, collect the S used in testStruct.
+	XCTAssertEqual(numS, 1, @"%ld S objects were collected; S used in testStruct is supposed to "
+		@"be collected.",
+		numS);
 }
 - (void)testBytesAppend {
-    NSString *a = @"Foo";
-    NSString *b = @"Bar";
-    NSData *data_a = [a dataUsingEncoding:NSUTF8StringEncoding];
-    NSData *data_b = [b dataUsingEncoding:NSUTF8StringEncoding];
-    NSData *gotData = GoTestpkgBytesAppend(data_a, data_b);
-    NSString *got = [[NSString alloc] initWithData:gotData encoding:NSUTF8StringEncoding];
-    NSString *want = [a stringByAppendingString:b];
-    XCTAssertEqualObjects(got, want, @"want %@\nGoTestpkgBytesAppend(%@, %@) = %@", want, a, b, got);
+	NSString *a = @"Foo";
+	NSString *b = @"Bar";
+	NSData *data_a = [a dataUsingEncoding:NSUTF8StringEncoding];
+	NSData *data_b = [b dataUsingEncoding:NSUTF8StringEncoding];
+	NSData *gotData = TestpkgBytesAppend(data_a, data_b);
+	NSString *got = [[NSString alloc] initWithData:gotData encoding:NSUTF8StringEncoding];
+	NSString *want = [a stringByAppendingString:b];
+	XCTAssertEqualObjects(got, want, @"want %@\nTestpkgBytesAppend(%@, %@) = %@", want, a, b, got);
 }
 
 - (void)testInterface {
-    // Test Go object implementing testpkg.I is handled correctly.
-    id<GoTestpkgI2> goObj = GoTestpkgNewI();
-    int64_t got = [goObj times:10];
-    XCTAssertEqual(got, 100, @"GoTestpkgNewI().times(10) = %lld; want %d", got, 100);
-    int32_t key = -1;
-    GoTestpkgRegisterI(key, goObj);
-    int64_t got2 = GoTestpkgMultiply(key, 10);
-    XCTAssertEqual(got, got2, @"GoTestpkgMultiply(10 * 10) = %lld; want %lld", got2, got);
-    GoTestpkgUnregisterI(key);
+	// Test Go object implementing testpkg.I is handled correctly.
+	id<TestpkgI2> goObj = TestpkgNewI();
+	int64_t got = [goObj times:10];
+	XCTAssertEqual(got, 100, @"TestpkgNewI().times(10) = %lld; want %d", got, 100);
+	int32_t key = -1;
+	TestpkgRegisterI(key, goObj);
+	int64_t got2 = TestpkgMultiply(key, 10);
+	XCTAssertEqual(got, got2, @"TestpkgMultiply(10 * 10) = %lld; want %lld", got2, got);
+	TestpkgUnregisterI(key);
 
-    // Test Objective-C objects implementing testpkg.I is handled correctly.
-    @autoreleasepool {
-        for (int32_t i = 0; i < 10; i++) {
-            Number *num = [[Number alloc] init];
-            num.value = i;
-            GoTestpkgRegisterI(i, num);
-        }
-        GoTestpkgGC();
-    }
+	// Test Objective-C objects implementing testpkg.I is handled correctly.
+	@autoreleasepool {
+		for (int32_t i = 0; i < 10; i++) {
+			Number *num = [[Number alloc] init];
+			num.value = i;
+			TestpkgRegisterI(i, num);
+		}
+		TestpkgGC();
+	}
 
-    // Registered Objective-C objects are pinned on Go side which must
-    // prevent deallocation from Objective-C.
-    for (int32_t i = 0; i < 10; i++) {
-        int64_t got = GoTestpkgMultiply(i, 2);
-        XCTAssertEqual(got, i * 2,@"GoTestpkgMultiply(%d, 2) = %lld; want %d", i, got, i * 2);
-        GoTestpkgUnregisterI(i);
-        GoTestpkgGC();
-    }
-    // Unregistered all Objective-C objects.
+	// Registered Objective-C objects are pinned on Go side which must
+	// prevent deallocation from Objective-C.
+	for (int32_t i = 0; i < 10; i++) {
+		int64_t got = TestpkgMultiply(i, 2);
+		XCTAssertEqual(got, i * 2,@"TestpkgMultiply(%d, 2) = %lld; want %d", i, got, i * 2);
+		TestpkgUnregisterI(i);
+		TestpkgGC();
+	}
+	// Unregistered all Objective-C objects.
 }
 
 - (void)testCollectI {
-    @autoreleasepool {
-        [self testInterface];
-    }
-    XCTAssertEqual(numI, 1, @"%d I objects were collected; I used in testInterface is supposed "
-                @"to be collected.", numI);
+	@autoreleasepool {
+		[self testInterface];
+	}
+	XCTAssertEqual(numI, 1, @"%d I objects were collected; I used in testInterface is supposed "
+		@"to be collected.", numI);
 }
 
 - (void)testConst {
-	XCTAssertEqualObjects(GoTestpkgAString, @"a string", @"GoTestpkgAString = %@, want 'a string'", GoTestpkgAString);
-	XCTAssertEqual(GoTestpkgAnInt, 7, @"GoTestpkgAnInt = %lld, want 7", GoTestpkgAnInt);
-	XCTAssertTrue(ABS(GoTestpkgAFloat - 0.12345) < 0.0001, @"GoTestpkgAFloat = %f, want 0.12345", GoTestpkgAFloat);
-	XCTAssertTrue(GoTestpkgABool == YES, @"GoTestpkgABool = %@, want YES", GoTestpkgAFloat ? @"YES" : @"NO");
-	XCTAssertEqual(GoTestpkgMinInt32, INT32_MIN, @"GoTestpkgMinInt32 = %d, want %d", GoTestpkgMinInt32, INT32_MIN);
-	XCTAssertEqual(GoTestpkgMaxInt32, INT32_MAX, @"GoTestpkgMaxInt32 = %d, want %d", GoTestpkgMaxInt32, INT32_MAX);
-	XCTAssertEqual(GoTestpkgMinInt64, INT64_MIN, @"GoTestpkgMinInt64 = %lld, want %lld", GoTestpkgMinInt64, INT64_MIN);
-	XCTAssertEqual(GoTestpkgMaxInt64, INT64_MAX, @"GoTestpkgMaxInt64 = %lld, want %lld", GoTestpkgMaxInt64, INT64_MAX);
-	XCTAssertTrue(ABS(GoTestpkgSmallestNonzeroFloat64 -
-          4.940656458412465441765687928682213723651e-324) < 1e-323, @"GoTestpkgSmallestNonzeroFloat64 = %f, want %f",
-          GoTestpkgSmallestNonzeroFloat64,
-          4.940656458412465441765687928682213723651e-324);
-	XCTAssertTrue(ABS(GoTestpkgMaxFloat64 -
-          1.797693134862315708145274237317043567981e+308) < 0.0001, @"GoTestpkgMaxFloat64 = %f, want %f", GoTestpkgMaxFloat64,
-          1.797693134862315708145274237317043567981e+308);
-	XCTAssertTrue(ABS(GoTestpkgSmallestNonzeroFloat32 -
-          1.401298464324817070923729583289916131280e-45) < 1e-44, @"GoTestpkgSmallestNonzeroFloat32 = %f, want %f",
-          GoTestpkgSmallestNonzeroFloat32,
-          1.401298464324817070923729583289916131280e-45);
-	XCTAssertTrue(ABS(GoTestpkgMaxFloat32 - 3.40282346638528859811704183484516925440e+38) < 0.0001,
-		@"GoTestpkgMaxFloat32 = %f, want %f", GoTestpkgMaxFloat32, 3.40282346638528859811704183484516925440e+38);
-	XCTAssertTrue(ABS(GoTestpkgLog2E - 1 / 0.693147180559945309417232121458176568075500134360255254120680009) < 0.0001,
-		@"GoTestpkgLog2E = %f, want %f", GoTestpkgLog2E, 1 / 0.693147180559945309417232121458176568075500134360255254120680009);
+	XCTAssertEqualObjects(TestpkgAString, @"a string", @"TestpkgAString = %@, want 'a string'", TestpkgAString);
+	XCTAssertEqual(TestpkgAnInt, 7, @"TestpkgAnInt = %lld, want 7", TestpkgAnInt);
+	XCTAssertTrue(ABS(TestpkgAFloat - 0.12345) < 0.0001, @"TestpkgAFloat = %f, want 0.12345", TestpkgAFloat);
+	XCTAssertTrue(TestpkgABool == YES, @"TestpkgABool = %@, want YES", TestpkgAFloat ? @"YES" : @"NO");
+	XCTAssertEqual(TestpkgMinInt32, INT32_MIN, @"TestpkgMinInt32 = %d, want %d", TestpkgMinInt32, INT32_MIN);
+	XCTAssertEqual(TestpkgMaxInt32, INT32_MAX, @"TestpkgMaxInt32 = %d, want %d", TestpkgMaxInt32, INT32_MAX);
+	XCTAssertEqual(TestpkgMinInt64, INT64_MIN, @"TestpkgMinInt64 = %lld, want %lld", TestpkgMinInt64, INT64_MIN);
+	XCTAssertEqual(TestpkgMaxInt64, INT64_MAX, @"TestpkgMaxInt64 = %lld, want %lld", TestpkgMaxInt64, INT64_MAX);
+	XCTAssertTrue(ABS(TestpkgSmallestNonzeroFloat64 -
+		4.940656458412465441765687928682213723651e-324) < 1e-323, @"TestpkgSmallestNonzeroFloat64 = %f, want %f",
+		TestpkgSmallestNonzeroFloat64,
+		4.940656458412465441765687928682213723651e-324);
+	XCTAssertTrue(ABS(TestpkgMaxFloat64 -
+		1.797693134862315708145274237317043567981e+308) < 0.0001, @"TestpkgMaxFloat64 = %f, want %f", TestpkgMaxFloat64,
+		1.797693134862315708145274237317043567981e+308);
+	XCTAssertTrue(ABS(TestpkgSmallestNonzeroFloat32 -
+		1.401298464324817070923729583289916131280e-45) < 1e-44, @"TestpkgSmallestNonzeroFloat32 = %f, want %f",
+		TestpkgSmallestNonzeroFloat32,
+		1.401298464324817070923729583289916131280e-45);
+	XCTAssertTrue(ABS(TestpkgMaxFloat32 - 3.40282346638528859811704183484516925440e+38) < 0.0001,
+		@"TestpkgMaxFloat32 = %f, want %f", TestpkgMaxFloat32, 3.40282346638528859811704183484516925440e+38);
+	XCTAssertTrue(ABS(TestpkgLog2E - 1 / 0.693147180559945309417232121458176568075500134360255254120680009) < 0.0001,
+		@"TestpkgLog2E = %f, want %f", TestpkgLog2E, 1 / 0.693147180559945309417232121458176568075500134360255254120680009);
 }
 
 - (void)testIssue12307 {
 	Number *num = [[Number alloc] init];
 	num.value = 1024;
 	NSError *error;
-	XCTAssertFalse(GoTestpkgCallIError(num, YES, &error), @"GoTestpkgCallIError(Number, YES) succeeded; want error");
+	XCTAssertFalse(TestpkgCallIError(num, YES, &error), @"TestpkgCallIError(Number, YES) succeeded; want error");
 	NSError *error2;
-	XCTAssertTrue(GoTestpkgCallIError(num, NO, &error2), @"GoTestpkgCallIError(Number, NO) failed(%@); want success", error2);
+	XCTAssertTrue(TestpkgCallIError(num, NO, &error2), @"TestpkgCallIError(Number, NO) failed(%@); want success", error2);
 }
 
 - (void)testErrorField {
 	NSString *wantMsg = @"an error message";
 	NSError *want = [NSError errorWithDomain:@"SeqTest" code:1 userInfo:@{NSLocalizedDescriptionKey: wantMsg}];
-	GoTestpkgNode *n = GoTestpkgNewNode(@"ErrTest");
+	TestpkgNode *n = TestpkgNewNode(@"ErrTest");
 	n.err = want;
 	NSError *got = n.err;
 	XCTAssertEqual(got, want, @"got different objects after roundtrip");
-	NSString *gotMsg = GoTestpkgErrorMessage(want);
+	NSString *gotMsg = TestpkgErrorMessage(want);
 	XCTAssertEqualObjects(gotMsg, wantMsg, @"err = %@, want %@", gotMsg, wantMsg);
 }
 
 - (void)testErrorDup {
-	NSError *err = GoTestpkg.globalErr;
-	XCTAssertTrue(GoTestpkgIsGlobalErr(err), @"A Go error must preserve its identity across the boundary");
+	NSError *err = Testpkg.globalErr;
+	XCTAssertTrue(TestpkgIsGlobalErr(err), @"A Go error must preserve its identity across the boundary");
 	XCTAssertEqualObjects([err localizedDescription], @"global err", "A Go error message must be preserved");
 }
 
 - (void)testVar {
-	NSString *s = GoTestpkg.stringVar;
-	XCTAssertEqualObjects(s, @"a string var", @"GoTestpkg.StringVar = %@, want 'a string var'", s);
+	NSString *s = Testpkg.stringVar;
+	XCTAssertEqualObjects(s, @"a string var", @"Testpkg.StringVar = %@, want 'a string var'", s);
 	s = @"a new string var";
-	GoTestpkg.stringVar = s;
-	NSString *s2 = GoTestpkg.stringVar;
-	XCTAssertEqualObjects(s2, s, @"GoTestpkg.stringVar = %@, want %@", s2, s);
+	Testpkg.stringVar = s;
+	NSString *s2 = Testpkg.stringVar;
+	XCTAssertEqualObjects(s2, s, @"Testpkg.stringVar = %@, want %@", s2, s);
 
-	int64_t i = GoTestpkg.intVar;
-	XCTAssertEqual(i, 77, @"GoTestpkg.intVar = %lld, want 77", i);
-	GoTestpkg.intVar = 777;
-	i = GoTestpkg.intVar;
-	XCTAssertEqual(i, 777, @"GoTestpkg.intVar = %lld, want 777", i);
-	[GoTestpkg setIntVar:7777];
-	i = [GoTestpkg intVar];
-	XCTAssertEqual(i, 7777, @"GoTestpkg.intVar = %lld, want 7777", i);
+	int64_t i = Testpkg.intVar;
+	XCTAssertEqual(i, 77, @"Testpkg.intVar = %lld, want 77", i);
+	Testpkg.intVar = 777;
+	i = Testpkg.intVar;
+	XCTAssertEqual(i, 777, @"Testpkg.intVar = %lld, want 777", i);
+	[Testpkg setIntVar:7777];
+	i = [Testpkg intVar];
+	XCTAssertEqual(i, 7777, @"Testpkg.intVar = %lld, want 7777", i);
 
-	GoTestpkgNode *n0 = GoTestpkg.nodeVar;
-	XCTAssertEqualObjects(n0.v, @"a struct var", @"GoTestpkg.NodeVar = %@, want 'a struct var'", n0.v);
-	GoTestpkgNode *n1 = GoTestpkgNewNode(@"a new struct var");
-	GoTestpkg.nodeVar = n1;
-	GoTestpkgNode *n2 = GoTestpkg.nodeVar;
-	XCTAssertEqualObjects(n2.v, @"a new struct var", @"GoTestpkg.NodeVar = %@, want 'a new struct var'", n2.v);
+	TestpkgNode *n0 = Testpkg.nodeVar;
+	XCTAssertEqualObjects(n0.v, @"a struct var", @"Testpkg.NodeVar = %@, want 'a struct var'", n0.v);
+	TestpkgNode *n1 = TestpkgNewNode(@"a new struct var");
+	Testpkg.nodeVar = n1;
+	TestpkgNode *n2 = Testpkg.nodeVar;
+	XCTAssertEqualObjects(n2.v, @"a new struct var", @"Testpkg.NodeVar = %@, want 'a new struct var'", n2.v);
 
 	Number *num = [[Number alloc] init];
 	num.value = 12345;
-	GoTestpkg.interfaceVar2 = num;
-	id<GoTestpkgI2> iface = GoTestpkg.interfaceVar2;
+	Testpkg.interfaceVar2 = num;
+	id<TestpkgI2> iface = Testpkg.interfaceVar2;
 	int64_t x = [iface times:10];
 	int64_t y = [num times:10];
-	XCTAssertEqual(x, y, @"GoTestpkg.InterfaceVar2 Times 10 = %lld, want %lld", x, y);
+	XCTAssertEqual(x, y, @"Testpkg.InterfaceVar2 Times 10 = %lld, want %lld", x, y);
 }
 
 - (void)testIssue12403 {
@@ -346,18 +344,18 @@
 	num.value = 1024;
 
 	NSError *error;
-	NSString *ret = GoTestpkgCallIStringError(num, @"alphabet", &error);
-	XCTAssertNil(ret, @"GoTestpkgCallIStringError(Number, 'alphabet') succeeded(%@); want error", ret);
+	NSString *ret = TestpkgCallIStringError(num, @"alphabet", &error);
+	XCTAssertNil(ret, @"TestpkgCallIStringError(Number, 'alphabet') succeeded(%@); want error", ret);
 	NSString *desc = [error localizedDescription];
-	XCTAssertEqualObjects(desc, @"NumberError", @"GoTestpkgCallIStringError(Number, 'alphabet') returned unexpected error message %@", desc);
+	XCTAssertEqualObjects(desc, @"NumberError", @"TestpkgCallIStringError(Number, 'alphabet') returned unexpected error message %@", desc);
 	NSError *error2;
-	NSString *ret2 = GoTestpkgCallIStringError(num, @"number", &error2);
-	XCTAssertNotNil(ret2, @"GoTestpkgCallIStringError(Number, 'number') failed(%@); want success", error2);
-	XCTAssertEqualObjects(ret2, @"OK", @"GoTestpkgCallIStringError(Number, 'number') returned unexpected results %@", ret2);
+	NSString *ret2 = TestpkgCallIStringError(num, @"number", &error2);
+	XCTAssertNotNil(ret2, @"TestpkgCallIStringError(Number, 'number') failed(%@); want success", error2);
+	XCTAssertEqualObjects(ret2, @"OK", @"TestpkgCallIStringError(Number, 'number') returned unexpected results %@", ret2);
 }
 
 - (void)testStrDup:(NSString *)want {
-	NSString *got = GoTestpkgStrDup(want);
+	NSString *got = TestpkgStrDup(want);
 	XCTAssertEqualObjects(want, got, @"StrDup returned %@; expected %@", got, want);
 }
 
@@ -370,7 +368,7 @@
 - (void)testByteArrayRead {
 	NSData *arr = [NSMutableData dataWithLength:8];
 	long n;
-	XCTAssertTrue(GoTestpkgReadIntoByteArray(arr, &n, nil), @"ReadIntoByteArray failed");
+	XCTAssertTrue(TestpkgReadIntoByteArray(arr, &n, nil), @"ReadIntoByteArray failed");
 	XCTAssertEqual(n, 8, @"ReadIntoByteArray wrote %ld bytes, expected %d", n, 8);
 	const uint8_t *b = [arr bytes];
 	for (int i = 0; i < [arr length]; i++) {
@@ -379,47 +377,47 @@
 	// Test that immutable data cannot be changed from Go
 	const uint8_t buf[] = {42};
 	arr = [NSData dataWithBytes:buf length:1];
-	XCTAssertTrue(GoTestpkgReadIntoByteArray(arr, &n, nil), @"ReadIntoByteArray failed");
+	XCTAssertTrue(TestpkgReadIntoByteArray(arr, &n, nil), @"ReadIntoByteArray failed");
 	XCTAssertEqual(n, 1, @"ReadIntoByteArray wrote %ld bytes, expected %d", n, 8);
 	b = [arr bytes];
 	XCTAssertEqual(b[0], 42, @"ReadIntoByteArray wrote to an immutable NSData; expected no change");
 }
 
 - (void)testNilField {
-	GoTestpkgNullFieldStruct *s = GoTestpkgNewNullFieldStruct();
+	TestpkgNullFieldStruct *s = TestpkgNewNullFieldStruct();
 	XCTAssertNil([s f], @"NullFieldStruct has non-nil field; expected nil");
 }
 
 - (void)testNullReferences {
 	NullTest *t = [[NullTest alloc] init];
-	XCTAssertTrue(GoTestpkgCallWithNull(nil, t), @"GoTestpkg.CallWithNull failed");
-	id<GoTestpkgI> i = GoTestpkgNewNullInterface();
+	XCTAssertTrue(TestpkgCallWithNull(nil, t), @"Testpkg.CallWithNull failed");
+	id<TestpkgI> i = TestpkgNewNullInterface();
 	XCTAssertNil(i, @"NewNullInterface() returned %p; expected nil", i);
-	GoTestpkgS *s = GoTestpkgNewNullStruct();
+	TestpkgS *s = TestpkgNewNullStruct();
 	XCTAssertNil(s, @"NewNullStruct() returned %p; expected nil", s);
 }
 
 - (void)testReturnsError {
 	NSError *error;
-	NSString *value = GoTestpkgReturnsError(TRUE, &error);
+	NSString *value = TestpkgReturnsError(TRUE, &error);
 	NSString *got = [error.userInfo valueForKey:NSLocalizedDescriptionKey];
 	NSString *want = @"Error";
-	XCTAssertEqualObjects(got, want, @"want %@\nGoTestpkgReturnsError(TRUE) = (%@, %@)", want, value, got);
+	XCTAssertEqualObjects(got, want, @"want %@\nTestpkgReturnsError(TRUE) = (%@, %@)", want, value, got);
 }
 
 - (void)testImportedPkg {
-	XCTAssertEqualObjects(GoSecondpkgHelloString, GoSecondpkgHello(), @"imported string should match");
-    id<GoSecondpkgI> i = GoTestpkgNewImportedI();
-	GoSecondpkgS *s = GoTestpkgNewImportedS();
+	XCTAssertEqualObjects(SecondpkgHelloString, SecondpkgHello(), @"imported string should match");
+	id<SecondpkgI> i = TestpkgNewImportedI();
+	SecondpkgS *s = TestpkgNewImportedS();
 	XCTAssertEqual(8, [i f:8], @"numbers should match");
 	XCTAssertEqual(8, [s f:8], @"numbers should match");
-	i = GoTestpkgWithImportedI(i);
-	s = GoTestpkgWithImportedS(s);
-	i = [GoTestpkg importedVarI];
-	s = [GoTestpkg importedVarS];
-	[GoTestpkg setImportedVarI:i];
-	[GoTestpkg setImportedVarS:s];
-	GoTestpkgImportedFields *fields = GoTestpkgNewImportedFields();
+	i = TestpkgWithImportedI(i);
+	s = TestpkgWithImportedS(s);
+	i = [Testpkg importedVarI];
+	s = [Testpkg importedVarS];
+	[Testpkg setImportedVarI:i];
+	[Testpkg setImportedVarS:s];
+	TestpkgImportedFields *fields = TestpkgNewImportedFields();
 	i = [fields i];
 	s = [fields s];
 	[fields setI:i];
@@ -428,25 +426,25 @@
 
 - (void)testRoundTripEquality {
 	Number *want = [[Number alloc] init];
-	Number *got = (Number *)GoTestpkgI2Dup(want);
+	Number *got = (Number *)TestpkgI2Dup(want);
 	XCTAssertEqual(got, want, @"ObjC object passed through Go should not be wrapped");
 
 	IDup *idup = [[IDup alloc] init];
-	XCTAssertTrue(GoTestpkgCallIDupper(idup), @"Go interface passed through ObjC should not be wrapped");
+	XCTAssertTrue(TestpkgCallIDupper(idup), @"Go interface passed through ObjC should not be wrapped");
 	CDup *cdup = [[CDup alloc] init];
-	XCTAssertTrue(GoTestpkgCallCDupper(cdup), @"Go struct passed through ObjC should not be wrapped");
+	XCTAssertTrue(TestpkgCallCDupper(cdup), @"Go struct passed through ObjC should not be wrapped");
 }
 
 - (void)testEmptyError {
-    NSError *error;
-    XCTAssertFalse(GoTestpkgEmptyError(&error), @"GoTestpkgEmptyError succeeded; want error");
-    XCTAssertNotNil(error, @"GoTestpkgEmptyError returned nil error");
-    id<GoTestpkgEmptyErrorer> empty = [[EmptyErrorer alloc] init];
-    XCTAssertFalse(GoTestpkgCallEmptyError(empty, &error), @"GoTestpkgCallEmptyError succeeded; want error");
-    XCTAssertNotNil(error, @"GoTestpkgCallEmptyError returned nil error");
+	NSError *error;
+	XCTAssertFalse(TestpkgEmptyError(&error), @"GoTestpkgEmptyError succeeded; want error");
+	XCTAssertNotNil(error, @"TestpkgEmptyError returned nil error");
+	id<TestpkgEmptyErrorer> empty = [[EmptyErrorer alloc] init];
+	XCTAssertFalse(TestpkgCallEmptyError(empty, &error), @"TestpkgCallEmptyError succeeded; want error");
+	XCTAssertNotNil(error, @"TestpkgCallEmptyError returned nil error");
 }
 
 - (void)testSIGPIPE {
-    GoTestpkgTestSIGPIPE();
+	TestpkgTestSIGPIPE();
 }
 @end
diff --git a/bind/objc/SeqWrappers.m b/bind/objc/SeqWrappers.m
index 05b5349..b59af9f 100644
--- a/bind/objc/SeqWrappers.m
+++ b/bind/objc/SeqWrappers.m
@@ -45,34 +45,34 @@
 }
 
 - (void)testFunction {
-	GoObjcpkgFunc();
+	ObjcpkgFunc();
 }
 
 - (void)testMethod {
-	GoObjcpkgMethod();
+	ObjcpkgMethod();
 }
 
 - (void)testNew {
-	GoObjcpkgNew();
+	ObjcpkgNew();
 }
 
 - (void)testError {
-	GoObjcpkgError();
+	ObjcpkgError();
 }
 
 - (void)testClass {
-	GoObjcpkgGoNSDate *d = [[GoObjcpkgGoNSDate alloc] init];
+	ObjcpkgGoNSDate *d = [[ObjcpkgGoNSDate alloc] init];
 	NSString *desc = [d description];
 	XCTAssertEqual(d, [d getSelf], "GoNSDate self not identical");
-	XCTAssertEqual(GoObjcpkgHash, [d hash], "GoNSDate hash not identical");
-	XCTAssertTrue([desc isEqualToString:GoObjcpkgDescriptionStr], "GoNSDate description mismatch: %@", desc);
-	GoObjcpkgGoUIResponder *resp = [[GoObjcpkgGoUIResponder alloc] init];
+	XCTAssertEqual(ObjcpkgHash, [d hash], "GoNSDate hash not identical");
+	XCTAssertTrue([desc isEqualToString:ObjcpkgDescriptionStr], "GoNSDate description mismatch: %@", desc);
+	ObjcpkgGoUIResponder *resp = [[ObjcpkgGoUIResponder alloc] init];
 	[resp pressesBegan:nil withEvent:nil];
 	XCTAssertTrue([resp called], "GoUIResponder.pressesBegan not called");
 }
 
 - (void)testSuper {
-	GoObjcpkgGoNSObject *o = [[GoObjcpkgGoNSObject alloc] init];
+	ObjcpkgGoNSObject *o = [[ObjcpkgGoNSObject alloc] init];
 	struct objc_super _super = {
 		.receiver = o,
 		.super_class = [NSObject class],
@@ -80,18 +80,18 @@
 	NSString *superDesc = ((NSString *(*)(struct objc_super*, SEL))objc_msgSendSuper)(&_super, @selector(description));
 	XCTAssertTrue([superDesc isEqualToString:[o description]], "GoNSObject description mismatch");
 	[o setUseSelf:TRUE];
-	XCTAssertTrue([GoObjcpkgDescriptionStr isEqualToString:[o description]], "GoNSObject description mismatch");
+	XCTAssertTrue([ObjcpkgDescriptionStr isEqualToString:[o description]], "GoNSObject description mismatch");
 }
 
 - (void)testIdentity {
 	NSDate *d = [[NSDate alloc] init];
-	NSDate *d2 = GoObjcpkgDupNSDate(d);
-	XCTAssertEqual(d, d2, @"GoObjcpkgDupNSDate failed to duplicate ObjC instance");
-	GoObjcpkgGoNSDate *gd = [[GoObjcpkgGoNSDate alloc] init];
-	NSDate *gd2 = GoObjcpkgDupNSDate(gd);
-	XCTAssertEqual(gd, gd2, @"GoObjcpkgDupNSDate failed to duplicate Go instance");
-	NSDate *gd3 = GoObjcpkgNewGoNSDate();
-	NSDate *gd4 = GoObjcpkgDupNSDate(gd3);
-	XCTAssertEqual(gd4, gd3, @"GoObjcpkgDupNSDate failed to duplicate instance created in Go");
+	NSDate *d2 = ObjcpkgDupNSDate(d);
+	XCTAssertEqual(d, d2, @"ObjcpkgDupNSDate failed to duplicate ObjC instance");
+	ObjcpkgGoNSDate *gd = [[ObjcpkgGoNSDate alloc] init];
+	NSDate *gd2 = ObjcpkgDupNSDate(gd);
+	XCTAssertEqual(gd, gd2, @"ObjcpkgDupNSDate failed to duplicate Go instance");
+	NSDate *gd3 = ObjcpkgNewGoNSDate();
+	NSDate *gd4 = ObjcpkgDupNSDate(gd3);
+	XCTAssertEqual(gd4, gd3, @"ObjcpkgDupNSDate failed to duplicate instance created in Go");
 }
 @end
diff --git a/bind/objc/seq.h b/bind/objc/seq.h
index 2227f06..57e3665 100644
--- a/bind/objc/seq.h
+++ b/bind/objc/seq.h
@@ -7,7 +7,7 @@
 
 #include <Foundation/Foundation.h>
 #include "ref.h"
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 #ifdef DEBUG
 #define LOG_DEBUG(...) NSLog(__VA_ARGS__);
diff --git a/bind/testdata/basictypes.objc.h.golden b/bind/testdata/basictypes.objc.h.golden
index 3841d37..63d28d1 100644
--- a/bind/testdata/basictypes.objc.h.golden
+++ b/bind/testdata/basictypes.objc.h.golden
@@ -3,29 +3,29 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoBasictypes_H__
-#define __GoBasictypes_H__
+#ifndef __Basictypes_H__
+#define __Basictypes_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-FOUNDATION_EXPORT const BOOL GoBasictypesABool;
-FOUNDATION_EXPORT const double GoBasictypesAFloat;
-FOUNDATION_EXPORT NSString* const GoBasictypesALongString;
-FOUNDATION_EXPORT const int32_t GoBasictypesARune;
-FOUNDATION_EXPORT NSString* const GoBasictypesAString;
-FOUNDATION_EXPORT const int64_t GoBasictypesAnInt;
-FOUNDATION_EXPORT const int64_t GoBasictypesAnInt2;
+FOUNDATION_EXPORT const BOOL BasictypesABool;
+FOUNDATION_EXPORT const double BasictypesAFloat;
+FOUNDATION_EXPORT NSString* const BasictypesALongString;
+FOUNDATION_EXPORT const int32_t BasictypesARune;
+FOUNDATION_EXPORT NSString* const BasictypesAString;
+FOUNDATION_EXPORT const int64_t BasictypesAnInt;
+FOUNDATION_EXPORT const int64_t BasictypesAnInt2;
 
-FOUNDATION_EXPORT BOOL GoBasictypesBool(BOOL p0);
+FOUNDATION_EXPORT BOOL BasictypesBool(BOOL p0);
 
-FOUNDATION_EXPORT NSData* GoBasictypesByteArrays(NSData* x);
+FOUNDATION_EXPORT NSData* BasictypesByteArrays(NSData* x);
 
-FOUNDATION_EXPORT BOOL GoBasictypesError(NSError** error);
+FOUNDATION_EXPORT BOOL BasictypesError(NSError** error);
 
-FOUNDATION_EXPORT BOOL GoBasictypesErrorPair(long* ret0_, NSError** error);
+FOUNDATION_EXPORT BOOL BasictypesErrorPair(long* ret0_, NSError** error);
 
-FOUNDATION_EXPORT void GoBasictypesInts(int8_t x, int16_t y, int32_t z, int64_t t, long u);
+FOUNDATION_EXPORT void BasictypesInts(int8_t x, int16_t y, int32_t z, int64_t t, long u);
 
 #endif
diff --git a/bind/testdata/basictypes.objc.m.golden b/bind/testdata/basictypes.objc.m.golden
index a4ca6c3..665fcef 100644
--- a/bind/testdata/basictypes.objc.m.golden
+++ b/bind/testdata/basictypes.objc.m.golden
@@ -6,25 +6,25 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoBasictypes.objc.h"
+#include "Basictypes.objc.h"
 
-const BOOL GoBasictypesABool = YES;
-const double GoBasictypesAFloat = 0.2015;
-NSString* const GoBasictypesALongString = @"LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString";
-const int32_t GoBasictypesARune = 32;
-NSString* const GoBasictypesAString = @"a string";
-const int64_t GoBasictypesAnInt = 7LL;
-const int64_t GoBasictypesAnInt2 = 9223372036854775807LL;
+const BOOL BasictypesABool = YES;
+const double BasictypesAFloat = 0.2015;
+NSString* const BasictypesALongString = @"LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString,LongString";
+const int32_t BasictypesARune = 32;
+NSString* const BasictypesAString = @"a string";
+const int64_t BasictypesAnInt = 7LL;
+const int64_t BasictypesAnInt2 = 9223372036854775807LL;
 
 
-BOOL GoBasictypesBool(BOOL p0) {
+BOOL BasictypesBool(BOOL p0) {
 	char _p0 = (char)p0;
 	char r0 = proxybasictypes__Bool(_p0);
 	BOOL _ret0_ = r0 ? YES : NO;
 	return _ret0_;
 }
 
-NSData* GoBasictypesByteArrays(NSData* x) {
+NSData* BasictypesByteArrays(NSData* x) {
 	nbyteslice _x = go_seq_from_objc_bytearray(x, 0);
 	nbyteslice r0 = proxybasictypes__ByteArrays(_x);
 	if (![x isKindOfClass:[NSMutableData class]]) {
@@ -34,14 +34,14 @@
 	return _ret0_;
 }
 
-BOOL GoBasictypesError(NSError** error) {
+BOOL BasictypesError(NSError** error) {
 	int32_t r0 = proxybasictypes__Error();
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(r0);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	if (_error != nil && error != nil) {
@@ -50,15 +50,15 @@
 	return (_error == nil);
 }
 
-BOOL GoBasictypesErrorPair(long* ret0_, NSError** error) {
+BOOL BasictypesErrorPair(long* ret0_, NSError** error) {
 	struct proxybasictypes__ErrorPair_return res = proxybasictypes__ErrorPair();
 	long _ret0_ = (long)res.r0;
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(res.r1);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	*ret0_ = _ret0_;
@@ -68,7 +68,7 @@
 	return (_error == nil);
 }
 
-void GoBasictypesInts(int8_t x, int16_t y, int32_t z, int64_t t, long u) {
+void BasictypesInts(int8_t x, int16_t y, int32_t z, int64_t t, long u) {
 	int8_t _x = (int8_t)x;
 	int16_t _y = (int16_t)y;
 	int32_t _z = (int32_t)z;
diff --git a/bind/testdata/customprefix.objc.go.h.golden b/bind/testdata/customprefix.objc.go.h.golden
index 1fe50ab..170e236 100644
--- a/bind/testdata/customprefix.objc.go.h.golden
+++ b/bind/testdata/customprefix.objc.go.h.golden
@@ -1,5 +1,5 @@
 // Objective-C API for talking to customprefix Go package.
-//   gobind -lang=objc -prefix="" customprefix
+//   gobind -lang=objc customprefix
 //
 // File is generated by gobind. Do not edit.
 
diff --git a/bind/testdata/customprefix.objc.h.golden b/bind/testdata/customprefix.objc.h.golden
index c1602b7..4169f6a 100644
--- a/bind/testdata/customprefix.objc.h.golden
+++ b/bind/testdata/customprefix.objc.h.golden
@@ -1,5 +1,5 @@
 // Objective-C API for talking to customprefix Go package.
-//   gobind -lang=objc -prefix="" customprefix
+//   gobind -lang=objc customprefix
 //
 // File is generated by gobind. Do not edit.
 
@@ -7,7 +7,7 @@
 #define __Customprefix_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
 FOUNDATION_EXPORT void CustomprefixF();
diff --git a/bind/testdata/customprefix.objc.m.golden b/bind/testdata/customprefix.objc.m.golden
index e4999c5..4db7753 100644
--- a/bind/testdata/customprefix.objc.m.golden
+++ b/bind/testdata/customprefix.objc.m.golden
@@ -1,5 +1,5 @@
 // Objective-C API for talking to customprefix Go package.
-//   gobind -lang=objc -prefix="" customprefix
+//   gobind -lang=objc customprefix
 //
 // File is generated by gobind. Do not edit.
 
diff --git a/bind/testdata/customprefixEX.objc.h.golden b/bind/testdata/customprefixEX.objc.h.golden
index 80b0be4..9bec10c 100644
--- a/bind/testdata/customprefixEX.objc.h.golden
+++ b/bind/testdata/customprefixEX.objc.h.golden
@@ -7,7 +7,7 @@
 #define __EXCustomprefix_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
 FOUNDATION_EXPORT void EXCustomprefixF();
diff --git a/bind/testdata/ignore.objc.h.golden b/bind/testdata/ignore.objc.h.golden
index a7a30bb..29e3296 100644
--- a/bind/testdata/ignore.objc.h.golden
+++ b/bind/testdata/ignore.objc.h.golden
@@ -3,18 +3,18 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoIgnore_H__
-#define __GoIgnore_H__
+#ifndef __Ignore_H__
+#define __Ignore_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@class GoIgnoreS;
-@protocol GoIgnoreI;
-@class GoIgnoreI;
+@class IgnoreS;
+@protocol IgnoreI;
+@class IgnoreI;
 
-@interface GoIgnoreS : NSObject <goSeqRefInterface> {
+@interface IgnoreS : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
@@ -27,7 +27,7 @@
 
 @end
 
-@protocol GoIgnoreI <NSObject>
+@protocol IgnoreI <NSObject>
 // skipped method I.Argument with unsupported parameter or return types
 
 // skipped method I.Result with unsupported parameter or return types
@@ -37,7 +37,7 @@
 // skipped const NamedConst with unsupported type: *types.Const
 
 
-@interface GoIgnore : NSObject
+@interface Ignore : NSObject
 // skipped variable V with unsupported type: *types.Interface
 
 // skipped variable Var with unsupported type: *types.Interface
@@ -50,9 +50,9 @@
 // skipped function Result with unsupported parameter or return types
 
 
-@class GoIgnoreI;
+@class IgnoreI;
 
-@interface GoIgnoreI : NSObject <goSeqRefInterface, GoIgnoreI> {
+@interface IgnoreI : NSObject <goSeqRefInterface, IgnoreI> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/ignore.objc.m.golden b/bind/testdata/ignore.objc.m.golden
index a9bb4ee..ed5b7c2 100644
--- a/bind/testdata/ignore.objc.m.golden
+++ b/bind/testdata/ignore.objc.m.golden
@@ -6,10 +6,10 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoIgnore.objc.h"
+#include "Ignore.objc.h"
 
 
-@implementation GoIgnoreS {
+@implementation IgnoreS {
 }
 
 - (id)initWithRef:(id)ref {
@@ -27,7 +27,7 @@
 @end
 
 
-@implementation GoIgnoreI {
+@implementation IgnoreI {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -46,7 +46,7 @@
 // skipped const NamedConst with unsupported type: *types.Const
 
 
-@implementation GoIgnore
+@implementation Ignore
 // skipped variable V with unsupported type: *types.Interface
 
 // skipped variable Var with unsupported type: *types.Interface
diff --git a/bind/testdata/interfaces.objc.h.golden b/bind/testdata/interfaces.objc.h.golden
index 0001d15..ffbd03e 100644
--- a/bind/testdata/interfaces.objc.h.golden
+++ b/bind/testdata/interfaces.objc.h.golden
@@ -3,37 +3,37 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoInterfaces_H__
-#define __GoInterfaces_H__
+#ifndef __Interfaces_H__
+#define __Interfaces_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@protocol GoInterfacesError;
-@class GoInterfacesError;
-@protocol GoInterfacesI;
-@class GoInterfacesI;
-@protocol GoInterfacesI1;
-@protocol GoInterfacesI2;
-@protocol GoInterfacesI3;
-@class GoInterfacesI3;
-@protocol GoInterfacesLargerI;
-@class GoInterfacesLargerI;
-@protocol GoInterfacesSameI;
-@class GoInterfacesSameI;
-@protocol GoInterfacesWithParam;
-@class GoInterfacesWithParam;
+@protocol InterfacesError;
+@class InterfacesError;
+@protocol InterfacesI;
+@class InterfacesI;
+@protocol InterfacesI1;
+@protocol InterfacesI2;
+@protocol InterfacesI3;
+@class InterfacesI3;
+@protocol InterfacesLargerI;
+@class InterfacesLargerI;
+@protocol InterfacesSameI;
+@class InterfacesSameI;
+@protocol InterfacesWithParam;
+@class InterfacesWithParam;
 
-@protocol GoInterfacesError <NSObject>
+@protocol InterfacesError <NSObject>
 - (BOOL)err:(NSError**)error;
 @end
 
-@protocol GoInterfacesI <NSObject>
+@protocol InterfacesI <NSObject>
 - (int32_t)rand;
 @end
 
-@interface GoInterfacesI1 : NSObject <goSeqRefInterface> {
+@interface InterfacesI1 : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
@@ -41,7 +41,7 @@
 - (void)j;
 @end
 
-@interface GoInterfacesI2 : NSObject <goSeqRefInterface> {
+@interface InterfacesI2 : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
@@ -49,42 +49,42 @@
 - (void)g;
 @end
 
-@protocol GoInterfacesI3 <NSObject>
-- (GoInterfacesI1*)f;
+@protocol InterfacesI3 <NSObject>
+- (InterfacesI1*)f;
 @end
 
-@protocol GoInterfacesLargerI <NSObject>
+@protocol InterfacesLargerI <NSObject>
 - (void)anotherFunc;
 - (int32_t)rand;
 @end
 
-@protocol GoInterfacesSameI <NSObject>
+@protocol InterfacesSameI <NSObject>
 - (int32_t)rand;
 @end
 
-@protocol GoInterfacesWithParam <NSObject>
+@protocol InterfacesWithParam <NSObject>
 - (void)hasParam:(BOOL)p0;
 @end
 
-FOUNDATION_EXPORT int32_t GoInterfacesAdd3(id<GoInterfacesI> r);
+FOUNDATION_EXPORT int32_t InterfacesAdd3(id<InterfacesI> r);
 
-FOUNDATION_EXPORT BOOL GoInterfacesCallErr(id<GoInterfacesError> e, NSError** error);
+FOUNDATION_EXPORT BOOL InterfacesCallErr(id<InterfacesError> e, NSError** error);
 
-FOUNDATION_EXPORT id<GoInterfacesI> GoInterfacesSeven();
+FOUNDATION_EXPORT id<InterfacesI> InterfacesSeven();
 
-@class GoInterfacesError;
+@class InterfacesError;
 
-@class GoInterfacesI;
+@class InterfacesI;
 
-@class GoInterfacesI3;
+@class InterfacesI3;
 
-@class GoInterfacesLargerI;
+@class InterfacesLargerI;
 
-@class GoInterfacesSameI;
+@class InterfacesSameI;
 
-@class GoInterfacesWithParam;
+@class InterfacesWithParam;
 
-@interface GoInterfacesError : NSObject <goSeqRefInterface, GoInterfacesError> {
+@interface InterfacesError : NSObject <goSeqRefInterface, InterfacesError> {
 }
 @property(strong, readonly) id _ref;
 
@@ -92,7 +92,7 @@
 - (BOOL)err:(NSError**)error;
 @end
 
-@interface GoInterfacesI : NSObject <goSeqRefInterface, GoInterfacesI> {
+@interface InterfacesI : NSObject <goSeqRefInterface, InterfacesI> {
 }
 @property(strong, readonly) id _ref;
 
@@ -100,15 +100,15 @@
 - (int32_t)rand;
 @end
 
-@interface GoInterfacesI3 : NSObject <goSeqRefInterface, GoInterfacesI3> {
+@interface InterfacesI3 : NSObject <goSeqRefInterface, InterfacesI3> {
 }
 @property(strong, readonly) id _ref;
 
 - (instancetype)initWithRef:(id)ref;
-- (GoInterfacesI1*)f;
+- (InterfacesI1*)f;
 @end
 
-@interface GoInterfacesLargerI : NSObject <goSeqRefInterface, GoInterfacesLargerI> {
+@interface InterfacesLargerI : NSObject <goSeqRefInterface, InterfacesLargerI> {
 }
 @property(strong, readonly) id _ref;
 
@@ -117,7 +117,7 @@
 - (int32_t)rand;
 @end
 
-@interface GoInterfacesSameI : NSObject <goSeqRefInterface, GoInterfacesSameI> {
+@interface InterfacesSameI : NSObject <goSeqRefInterface, InterfacesSameI> {
 }
 @property(strong, readonly) id _ref;
 
@@ -125,7 +125,7 @@
 - (int32_t)rand;
 @end
 
-@interface GoInterfacesWithParam : NSObject <goSeqRefInterface, GoInterfacesWithParam> {
+@interface InterfacesWithParam : NSObject <goSeqRefInterface, InterfacesWithParam> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/interfaces.objc.m.golden b/bind/testdata/interfaces.objc.m.golden
index aaf04cd..628ff8e 100644
--- a/bind/testdata/interfaces.objc.m.golden
+++ b/bind/testdata/interfaces.objc.m.golden
@@ -6,9 +6,9 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoInterfaces.objc.h"
+#include "Interfaces.objc.h"
 
-@implementation GoInterfacesError {
+@implementation InterfacesError {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -20,12 +20,12 @@
 - (BOOL)err:(NSError**)error {
 	int32_t refnum = go_seq_go_to_refnum(self._ref);
 	int32_t r0 = proxyinterfaces_Error_Err(refnum);
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(r0);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	if (_error != nil && error != nil) {
@@ -37,7 +37,7 @@
 @end
 
 
-@implementation GoInterfacesI {
+@implementation InterfacesI {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -56,7 +56,7 @@
 @end
 
 
-@implementation GoInterfacesI1 {
+@implementation InterfacesI1 {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -73,7 +73,7 @@
 @end
 
 
-@implementation GoInterfacesI2 {
+@implementation InterfacesI2 {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -90,7 +90,7 @@
 @end
 
 
-@implementation GoInterfacesI3 {
+@implementation InterfacesI3 {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -99,15 +99,15 @@
 	return self;
 }
 
-- (GoInterfacesI1*)f {
+- (InterfacesI1*)f {
 	int32_t refnum = go_seq_go_to_refnum(self._ref);
 	int32_t r0 = proxyinterfaces_I3_F(refnum);
-	GoInterfacesI1* _ret0_ = nil;
+	InterfacesI1* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(r0);
 	if (_ret0__ref != NULL) {
 		_ret0_ = _ret0__ref.obj;
 		if (_ret0_ == nil) {
-			_ret0_ = [[GoInterfacesI1 alloc] initWithRef:_ret0__ref];
+			_ret0_ = [[InterfacesI1 alloc] initWithRef:_ret0__ref];
 		}
 	}
 	return _ret0_;
@@ -116,7 +116,7 @@
 @end
 
 
-@implementation GoInterfacesLargerI {
+@implementation InterfacesLargerI {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -140,7 +140,7 @@
 @end
 
 
-@implementation GoInterfacesSameI {
+@implementation InterfacesSameI {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -159,7 +159,7 @@
 @end
 
 
-@implementation GoInterfacesWithParam {
+@implementation InterfacesWithParam {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -178,7 +178,7 @@
 
 
 
-int32_t GoInterfacesAdd3(id<GoInterfacesI> r) {
+int32_t InterfacesAdd3(id<InterfacesI> r) {
 	int32_t _r;
 	if ([r conformsToProtocol:@protocol(goSeqRefInterface)]) {
 		id<goSeqRefInterface> r_proxy = (id<goSeqRefInterface>)(r);
@@ -191,7 +191,7 @@
 	return _ret0_;
 }
 
-BOOL GoInterfacesCallErr(id<GoInterfacesError> e, NSError** error) {
+BOOL InterfacesCallErr(id<InterfacesError> e, NSError** error) {
 	int32_t _e;
 	if ([e conformsToProtocol:@protocol(goSeqRefInterface)]) {
 		id<goSeqRefInterface> e_proxy = (id<goSeqRefInterface>)(e);
@@ -200,12 +200,12 @@
 		_e = go_seq_to_refnum(e);
 	}
 	int32_t r0 = proxyinterfaces__CallErr(_e);
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(r0);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	if (_error != nil && error != nil) {
@@ -214,14 +214,14 @@
 	return (_error == nil);
 }
 
-id<GoInterfacesI> GoInterfacesSeven() {
+id<InterfacesI> InterfacesSeven() {
 	int32_t r0 = proxyinterfaces__Seven();
-	GoInterfacesI* _ret0_ = nil;
+	InterfacesI* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(r0);
 	if (_ret0__ref != NULL) {
 		_ret0_ = _ret0__ref.obj;
 		if (_ret0_ == nil) {
-			_ret0_ = [[GoInterfacesI alloc] initWithRef:_ret0__ref];
+			_ret0_ = [[InterfacesI alloc] initWithRef:_ret0__ref];
 		}
 	}
 	return _ret0_;
@@ -229,7 +229,7 @@
 
 int32_t cproxyinterfaces_Error_Err(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesError* o = go_seq_objc_from_refnum(refnum);
+		InterfacesError* o = go_seq_objc_from_refnum(refnum);
 		NSError* error = nil;
 		BOOL returnVal = [o err:&error];
 		NSError *_error = nil;
@@ -249,7 +249,7 @@
 
 int32_t cproxyinterfaces_I_Rand(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesI* o = go_seq_objc_from_refnum(refnum);
+		InterfacesI* o = go_seq_objc_from_refnum(refnum);
 		int32_t ret0_;
 		ret0_ = [o rand];
 		int32_t _ret0_ = (int32_t)ret0_;
@@ -259,22 +259,22 @@
 
 void cproxyinterfaces_I1_J(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesI1* o = go_seq_objc_from_refnum(refnum);
+		InterfacesI1* o = go_seq_objc_from_refnum(refnum);
 		[o j];
 	}
 }
 
 void cproxyinterfaces_I2_G(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesI2* o = go_seq_objc_from_refnum(refnum);
+		InterfacesI2* o = go_seq_objc_from_refnum(refnum);
 		[o g];
 	}
 }
 
 int32_t cproxyinterfaces_I3_F(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesI3* o = go_seq_objc_from_refnum(refnum);
-		GoInterfacesI1* ret0_;
+		InterfacesI3* o = go_seq_objc_from_refnum(refnum);
+		InterfacesI1* ret0_;
 		ret0_ = [o f];
 		int32_t _ret0_;
 		if ([ret0_ conformsToProtocol:@protocol(goSeqRefInterface)]) {
@@ -289,14 +289,14 @@
 
 void cproxyinterfaces_LargerI_AnotherFunc(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesLargerI* o = go_seq_objc_from_refnum(refnum);
+		InterfacesLargerI* o = go_seq_objc_from_refnum(refnum);
 		[o anotherFunc];
 	}
 }
 
 int32_t cproxyinterfaces_LargerI_Rand(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesLargerI* o = go_seq_objc_from_refnum(refnum);
+		InterfacesLargerI* o = go_seq_objc_from_refnum(refnum);
 		int32_t ret0_;
 		ret0_ = [o rand];
 		int32_t _ret0_ = (int32_t)ret0_;
@@ -306,7 +306,7 @@
 
 int32_t cproxyinterfaces_SameI_Rand(int32_t refnum) {
 	@autoreleasepool {
-		GoInterfacesSameI* o = go_seq_objc_from_refnum(refnum);
+		InterfacesSameI* o = go_seq_objc_from_refnum(refnum);
 		int32_t ret0_;
 		ret0_ = [o rand];
 		int32_t _ret0_ = (int32_t)ret0_;
@@ -316,7 +316,7 @@
 
 void cproxyinterfaces_WithParam_HasParam(int32_t refnum, char p0) {
 	@autoreleasepool {
-		GoInterfacesWithParam* o = go_seq_objc_from_refnum(refnum);
+		InterfacesWithParam* o = go_seq_objc_from_refnum(refnum);
 		BOOL _p0 = p0 ? YES : NO;
 		[o hasParam:_p0];
 	}
diff --git a/bind/testdata/issue10788.objc.h.golden b/bind/testdata/issue10788.objc.h.golden
index 24790ca..083208b 100644
--- a/bind/testdata/issue10788.objc.h.golden
+++ b/bind/testdata/issue10788.objc.h.golden
@@ -3,18 +3,18 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoIssue10788_H__
-#define __GoIssue10788_H__
+#ifndef __Issue10788_H__
+#define __Issue10788_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@class GoIssue10788TestStruct;
-@protocol GoIssue10788TestInterface;
-@class GoIssue10788TestInterface;
+@class Issue10788TestStruct;
+@protocol Issue10788TestInterface;
+@class Issue10788TestInterface;
 
-@interface GoIssue10788TestStruct : NSObject <goSeqRefInterface> {
+@interface Issue10788TestStruct : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
@@ -23,19 +23,19 @@
 - (void)setValue:(NSString*)v;
 @end
 
-@protocol GoIssue10788TestInterface <NSObject>
-- (void)doSomeWork:(GoIssue10788TestStruct*)s;
+@protocol Issue10788TestInterface <NSObject>
+- (void)doSomeWork:(Issue10788TestStruct*)s;
 - (void)multipleUnnamedParams:(long)p0 p1:(NSString*)p1 日本:(int64_t)日本;
 @end
 
-@class GoIssue10788TestInterface;
+@class Issue10788TestInterface;
 
-@interface GoIssue10788TestInterface : NSObject <goSeqRefInterface, GoIssue10788TestInterface> {
+@interface Issue10788TestInterface : NSObject <goSeqRefInterface, Issue10788TestInterface> {
 }
 @property(strong, readonly) id _ref;
 
 - (instancetype)initWithRef:(id)ref;
-- (void)doSomeWork:(GoIssue10788TestStruct*)s;
+- (void)doSomeWork:(Issue10788TestStruct*)s;
 - (void)multipleUnnamedParams:(long)p0 p1:(NSString*)p1 日本:(int64_t)日本;
 @end
 
diff --git a/bind/testdata/issue10788.objc.m.golden b/bind/testdata/issue10788.objc.m.golden
index 51ea522..aa752c7 100644
--- a/bind/testdata/issue10788.objc.m.golden
+++ b/bind/testdata/issue10788.objc.m.golden
@@ -6,10 +6,10 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoIssue10788.objc.h"
+#include "Issue10788.objc.h"
 
 
-@implementation GoIssue10788TestStruct {
+@implementation Issue10788TestStruct {
 }
 
 - (id)initWithRef:(id)ref {
@@ -34,7 +34,7 @@
 @end
 
 
-@implementation GoIssue10788TestInterface {
+@implementation Issue10788TestInterface {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -43,7 +43,7 @@
 	return self;
 }
 
-- (void)doSomeWork:(GoIssue10788TestStruct*)s {
+- (void)doSomeWork:(Issue10788TestStruct*)s {
 	int32_t refnum = go_seq_go_to_refnum(self._ref);
 	int32_t _s;
 	if ([s conformsToProtocol:@protocol(goSeqRefInterface)]) {
@@ -69,13 +69,13 @@
 
 void cproxyissue10788_TestInterface_DoSomeWork(int32_t refnum, int32_t s) {
 	@autoreleasepool {
-		GoIssue10788TestInterface* o = go_seq_objc_from_refnum(refnum);
-		GoIssue10788TestStruct* _s = nil;
+		Issue10788TestInterface* o = go_seq_objc_from_refnum(refnum);
+		Issue10788TestStruct* _s = nil;
 		GoSeqRef* _s_ref = go_seq_from_refnum(s);
 		if (_s_ref != NULL) {
 			_s = _s_ref.obj;
 			if (_s == nil) {
-				_s = [[GoIssue10788TestStruct alloc] initWithRef:_s_ref];
+				_s = [[Issue10788TestStruct alloc] initWithRef:_s_ref];
 			}
 		}
 		[o doSomeWork:_s];
@@ -84,7 +84,7 @@
 
 void cproxyissue10788_TestInterface_MultipleUnnamedParams(int32_t refnum, nint p0, nstring p1, int64_t 日本) {
 	@autoreleasepool {
-		GoIssue10788TestInterface* o = go_seq_objc_from_refnum(refnum);
+		Issue10788TestInterface* o = go_seq_objc_from_refnum(refnum);
 		long _p0 = (long)p0;
 		NSString *_p1 = go_seq_to_objc_string(p1);
 		int64_t _日本 = (int64_t)日本;
diff --git a/bind/testdata/issue12328.objc.h.golden b/bind/testdata/issue12328.objc.h.golden
index ba685ab..0cf0d70 100644
--- a/bind/testdata/issue12328.objc.h.golden
+++ b/bind/testdata/issue12328.objc.h.golden
@@ -3,16 +3,16 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoIssue12328_H__
-#define __GoIssue12328_H__
+#ifndef __Issue12328_H__
+#define __Issue12328_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@class GoIssue12328T;
+@class Issue12328T;
 
-@interface GoIssue12328T : NSObject <goSeqRefInterface> {
+@interface Issue12328T : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/issue12328.objc.m.golden b/bind/testdata/issue12328.objc.m.golden
index d2248c6..5487b26 100644
--- a/bind/testdata/issue12328.objc.m.golden
+++ b/bind/testdata/issue12328.objc.m.golden
@@ -6,10 +6,10 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoIssue12328.objc.h"
+#include "Issue12328.objc.h"
 
 
-@implementation GoIssue12328T {
+@implementation Issue12328T {
 }
 
 - (id)initWithRef:(id)ref {
@@ -21,12 +21,12 @@
 - (NSError*)err {
 	int32_t refnum = go_seq_go_to_refnum(self._ref);
 	int32_t r0 = proxyissue12328_T_Err_Get(refnum);
-	GoUniverseerror* _r0 = nil;
+	Universeerror* _r0 = nil;
 	GoSeqRef* _r0_ref = go_seq_from_refnum(r0);
 	if (_r0_ref != NULL) {
 		_r0 = _r0_ref.obj;
 		if (_r0 == nil) {
-			_r0 = [[GoUniverseerror alloc] initWithRef:_r0_ref];
+			_r0 = [[Universeerror alloc] initWithRef:_r0_ref];
 		}
 	}
 	return _r0;
diff --git a/bind/testdata/issue12403.objc.h.golden b/bind/testdata/issue12403.objc.h.golden
index 46cf656..03ba5ea 100644
--- a/bind/testdata/issue12403.objc.h.golden
+++ b/bind/testdata/issue12403.objc.h.golden
@@ -3,24 +3,24 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoIssue12403_H__
-#define __GoIssue12403_H__
+#ifndef __Issue12403_H__
+#define __Issue12403_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@protocol GoIssue12403Parsable;
-@class GoIssue12403Parsable;
+@protocol Issue12403Parsable;
+@class Issue12403Parsable;
 
-@protocol GoIssue12403Parsable <NSObject>
+@protocol Issue12403Parsable <NSObject>
 - (NSString*)fromJSON:(NSString*)jstr;
 - (NSString*)toJSON:(NSError**)error;
 @end
 
-@class GoIssue12403Parsable;
+@class Issue12403Parsable;
 
-@interface GoIssue12403Parsable : NSObject <goSeqRefInterface, GoIssue12403Parsable> {
+@interface Issue12403Parsable : NSObject <goSeqRefInterface, Issue12403Parsable> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/issue12403.objc.m.golden b/bind/testdata/issue12403.objc.m.golden
index 5b12b0b..4b732f1 100644
--- a/bind/testdata/issue12403.objc.m.golden
+++ b/bind/testdata/issue12403.objc.m.golden
@@ -6,9 +6,9 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoIssue12403.objc.h"
+#include "Issue12403.objc.h"
 
-@implementation GoIssue12403Parsable {
+@implementation Issue12403Parsable {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -29,12 +29,12 @@
 	int32_t refnum = go_seq_go_to_refnum(self._ref);
 	struct proxyissue12403_Parsable_ToJSON_return res = proxyissue12403_Parsable_ToJSON(refnum);
 	NSString *_ret0_ = go_seq_to_objc_string(res.r0);
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(res.r1);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	if (_error != nil && error != nil) {
@@ -52,7 +52,7 @@
 
 nstring cproxyissue12403_Parsable_FromJSON(int32_t refnum, nstring jstr) {
 	@autoreleasepool {
-		GoIssue12403Parsable* o = go_seq_objc_from_refnum(refnum);
+		Issue12403Parsable* o = go_seq_objc_from_refnum(refnum);
 		NSString *_jstr = go_seq_to_objc_string(jstr);
 		NSString* ret0_;
 		ret0_ = [o fromJSON:_jstr];
@@ -63,7 +63,7 @@
 
 struct cproxyissue12403_Parsable_ToJSON_return cproxyissue12403_Parsable_ToJSON(int32_t refnum) {
 	@autoreleasepool {
-		GoIssue12403Parsable* o = go_seq_objc_from_refnum(refnum);
+		Issue12403Parsable* o = go_seq_objc_from_refnum(refnum);
 		NSString* ret0_;
 		NSError* error = nil;
 		ret0_ = [o toJSON:&error];
diff --git a/bind/testdata/keywords.objc.h.golden b/bind/testdata/keywords.objc.h.golden
index b3eaab8..f406b48 100644
--- a/bind/testdata/keywords.objc.h.golden
+++ b/bind/testdata/keywords.objc.h.golden
@@ -3,17 +3,17 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoKeywords_H__
-#define __GoKeywords_H__
+#ifndef __Keywords_H__
+#define __Keywords_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@protocol GoKeywordsKeywordCaller;
-@class GoKeywordsKeywordCaller;
+@protocol KeywordsKeywordCaller;
+@class KeywordsKeywordCaller;
 
-@protocol GoKeywordsKeywordCaller <NSObject>
+@protocol KeywordsKeywordCaller <NSObject>
 - (void)abstract;
 - (void)assert;
 - (void)boolean;
@@ -69,13 +69,13 @@
 - (void)while;
 @end
 
-FOUNDATION_EXPORT void GoKeywordsConst(NSString* id_);
+FOUNDATION_EXPORT void KeywordsConst(NSString* id_);
 
-FOUNDATION_EXPORT void GoKeywordsStatic(NSString* strictfp);
+FOUNDATION_EXPORT void KeywordsStatic(NSString* strictfp);
 
-@class GoKeywordsKeywordCaller;
+@class KeywordsKeywordCaller;
 
-@interface GoKeywordsKeywordCaller : NSObject <goSeqRefInterface, GoKeywordsKeywordCaller> {
+@interface KeywordsKeywordCaller : NSObject <goSeqRefInterface, KeywordsKeywordCaller> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/keywords.objc.m.golden b/bind/testdata/keywords.objc.m.golden
index 81d7dc8..984f050 100644
--- a/bind/testdata/keywords.objc.m.golden
+++ b/bind/testdata/keywords.objc.m.golden
@@ -6,9 +6,9 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoKeywords.objc.h"
+#include "Keywords.objc.h"
 
-@implementation GoKeywordsKeywordCaller {
+@implementation KeywordsKeywordCaller {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -286,383 +286,383 @@
 
 
 
-void GoKeywordsConst(NSString* id_) {
+void KeywordsConst(NSString* id_) {
 	nstring _id_ = go_seq_from_objc_string(id_);
 	proxykeywords__Const(_id_);
 }
 
-void GoKeywordsStatic(NSString* strictfp) {
+void KeywordsStatic(NSString* strictfp) {
 	nstring _strictfp = go_seq_from_objc_string(strictfp);
 	proxykeywords__Static(_strictfp);
 }
 
 void cproxykeywords_KeywordCaller_Abstract(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o abstract];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Assert(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o assert];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Boolean(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o boolean];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Break(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o break];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Byte(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o byte];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Case(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o case];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Catch(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o catch];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Char(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o char_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Class(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o class];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Const(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o const_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Continue(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o continue];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Default(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o default];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Do(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o do];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Double(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o double_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Else(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o else];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Enum(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o enum];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Extends(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o extends];
 	}
 }
 
 void cproxykeywords_KeywordCaller_False(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o false];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Final(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o final];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Finally(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o finally];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Float(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o float_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_For(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o for];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Goto(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o goto];
 	}
 }
 
 void cproxykeywords_KeywordCaller_If(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o if];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Implements(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o implements];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Import(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o import];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Instanceof(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o instanceof];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Int(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o int_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Interface(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o interface];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Long(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o long_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Native(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o native];
 	}
 }
 
 void cproxykeywords_KeywordCaller_New(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o new];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Null(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o null];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Package(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o package];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Private(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o private];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Protected(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o protected];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Public(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o public];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Return(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o return];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Short(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o short_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Static(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o static];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Strictfp(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o strictfp];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Super(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o super_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Switch(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o switch];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Synchronized(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o synchronized];
 	}
 }
 
 void cproxykeywords_KeywordCaller_This(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o this];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Throw(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o throw];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Throws(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o throws];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Transient(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o transient];
 	}
 }
 
 void cproxykeywords_KeywordCaller_True(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o true];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Try(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o try];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Void(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o void_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_Volatile(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o volatile_];
 	}
 }
 
 void cproxykeywords_KeywordCaller_While(int32_t refnum) {
 	@autoreleasepool {
-		GoKeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
+		KeywordsKeywordCaller* o = go_seq_objc_from_refnum(refnum);
 		[o while];
 	}
 }
diff --git a/bind/testdata/structs.objc.h.golden b/bind/testdata/structs.objc.h.golden
index c34888a..424d2b1 100644
--- a/bind/testdata/structs.objc.h.golden
+++ b/bind/testdata/structs.objc.h.golden
@@ -3,19 +3,19 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoStructs_H__
-#define __GoStructs_H__
+#ifndef __Structs_H__
+#define __Structs_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@class GoStructsS;
-@class GoStructsS2;
-@protocol GoStructsI;
-@class GoStructsI;
+@class StructsS;
+@class StructsS2;
+@protocol StructsI;
+@class StructsI;
 
-@interface GoStructsS : NSObject <goSeqRefInterface> {
+@interface StructsS : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
@@ -24,11 +24,11 @@
 - (void)setX:(double)v;
 - (double)y;
 - (void)setY:(double)v;
-- (GoStructsS*)identity:(NSError**)error;
+- (StructsS*)identity:(NSError**)error;
 - (double)sum;
 @end
 
-@interface GoStructsS2 : NSObject <goSeqRefInterface> {
+@interface StructsS2 : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
@@ -37,17 +37,17 @@
 - (NSString*)string;
 @end
 
-@protocol GoStructsI <NSObject>
+@protocol StructsI <NSObject>
 - (void)m;
 @end
 
-FOUNDATION_EXPORT GoStructsS* GoStructsIdentity(GoStructsS* s);
+FOUNDATION_EXPORT StructsS* StructsIdentity(StructsS* s);
 
-FOUNDATION_EXPORT GoStructsS* GoStructsIdentityWithError(GoStructsS* s, NSError** error);
+FOUNDATION_EXPORT StructsS* StructsIdentityWithError(StructsS* s, NSError** error);
 
-@class GoStructsI;
+@class StructsI;
 
-@interface GoStructsI : NSObject <goSeqRefInterface, GoStructsI> {
+@interface StructsI : NSObject <goSeqRefInterface, StructsI> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/structs.objc.m.golden b/bind/testdata/structs.objc.m.golden
index 4cdb057..f4557ce 100644
--- a/bind/testdata/structs.objc.m.golden
+++ b/bind/testdata/structs.objc.m.golden
@@ -6,10 +6,10 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoStructs.objc.h"
+#include "Structs.objc.h"
 
 
-@implementation GoStructsS {
+@implementation StructsS {
 }
 
 - (id)initWithRef:(id)ref {
@@ -44,23 +44,23 @@
 	proxystructs_S_Y_Set(refnum, _v);
 }
 
-- (GoStructsS*)identity:(NSError**)error {
+- (StructsS*)identity:(NSError**)error {
 	int32_t refnum = go_seq_go_to_refnum(self._ref);
 	struct proxystructs_S_Identity_return res = proxystructs_S_Identity(refnum);
-	GoStructsS* _ret0_ = nil;
+	StructsS* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(res.r0);
 	if (_ret0__ref != NULL) {
 		_ret0_ = _ret0__ref.obj;
 		if (_ret0_ == nil) {
-			_ret0_ = [[GoStructsS alloc] initWithRef:_ret0__ref];
+			_ret0_ = [[StructsS alloc] initWithRef:_ret0__ref];
 		}
 	}
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(res.r1);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	if (_error != nil && error != nil) {
@@ -83,7 +83,7 @@
 
 
 
-@implementation GoStructsS2 {
+@implementation StructsS2 {
 }
 
 - (id)initWithRef:(id)ref {
@@ -107,7 +107,7 @@
 @end
 
 
-@implementation GoStructsI {
+@implementation StructsI {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -125,7 +125,7 @@
 
 
 
-GoStructsS* GoStructsIdentity(GoStructsS* s) {
+StructsS* StructsIdentity(StructsS* s) {
 	int32_t _s;
 	if ([s conformsToProtocol:@protocol(goSeqRefInterface)]) {
 		id<goSeqRefInterface> s_proxy = (id<goSeqRefInterface>)(s);
@@ -134,18 +134,18 @@
 		_s = go_seq_to_refnum(s);
 	}
 	int32_t r0 = proxystructs__Identity(_s);
-	GoStructsS* _ret0_ = nil;
+	StructsS* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(r0);
 	if (_ret0__ref != NULL) {
 		_ret0_ = _ret0__ref.obj;
 		if (_ret0_ == nil) {
-			_ret0_ = [[GoStructsS alloc] initWithRef:_ret0__ref];
+			_ret0_ = [[StructsS alloc] initWithRef:_ret0__ref];
 		}
 	}
 	return _ret0_;
 }
 
-GoStructsS* GoStructsIdentityWithError(GoStructsS* s, NSError** error) {
+StructsS* StructsIdentityWithError(StructsS* s, NSError** error) {
 	int32_t _s;
 	if ([s conformsToProtocol:@protocol(goSeqRefInterface)]) {
 		id<goSeqRefInterface> s_proxy = (id<goSeqRefInterface>)(s);
@@ -154,20 +154,20 @@
 		_s = go_seq_to_refnum(s);
 	}
 	struct proxystructs__IdentityWithError_return res = proxystructs__IdentityWithError(_s);
-	GoStructsS* _ret0_ = nil;
+	StructsS* _ret0_ = nil;
 	GoSeqRef* _ret0__ref = go_seq_from_refnum(res.r0);
 	if (_ret0__ref != NULL) {
 		_ret0_ = _ret0__ref.obj;
 		if (_ret0_ == nil) {
-			_ret0_ = [[GoStructsS alloc] initWithRef:_ret0__ref];
+			_ret0_ = [[StructsS alloc] initWithRef:_ret0__ref];
 		}
 	}
-	GoUniverseerror* _error = nil;
+	Universeerror* _error = nil;
 	GoSeqRef* _error_ref = go_seq_from_refnum(res.r1);
 	if (_error_ref != NULL) {
 		_error = _error_ref.obj;
 		if (_error == nil) {
-			_error = [[GoUniverseerror alloc] initWithRef:_error_ref];
+			_error = [[Universeerror alloc] initWithRef:_error_ref];
 		}
 	}
 	if (_error != nil && error != nil) {
@@ -181,7 +181,7 @@
 
 void cproxystructs_I_M(int32_t refnum) {
 	@autoreleasepool {
-		GoStructsI* o = go_seq_objc_from_refnum(refnum);
+		StructsI* o = go_seq_objc_from_refnum(refnum);
 		[o m];
 	}
 }
diff --git a/bind/testdata/try.objc.h.golden b/bind/testdata/try.objc.h.golden
index ba6145c..e236205 100644
--- a/bind/testdata/try.objc.h.golden
+++ b/bind/testdata/try.objc.h.golden
@@ -3,13 +3,13 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoTry_H__
-#define __GoTry_H__
+#ifndef __Try_H__
+#define __Try_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-FOUNDATION_EXPORT NSString* GoTryThis();
+FOUNDATION_EXPORT NSString* TryThis();
 
 #endif
diff --git a/bind/testdata/try.objc.m.golden b/bind/testdata/try.objc.m.golden
index d2b1953..990a81f 100644
--- a/bind/testdata/try.objc.m.golden
+++ b/bind/testdata/try.objc.m.golden
@@ -6,10 +6,10 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoTry.objc.h"
+#include "Try.objc.h"
 
 
-NSString* GoTryThis() {
+NSString* TryThis() {
 	nstring r0 = proxytry__This();
 	NSString *_ret0_ = go_seq_to_objc_string(r0);
 	return _ret0_;
diff --git a/bind/testdata/vars.objc.h.golden b/bind/testdata/vars.objc.h.golden
index 178701c..eb39edc 100644
--- a/bind/testdata/vars.objc.h.golden
+++ b/bind/testdata/vars.objc.h.golden
@@ -3,28 +3,28 @@
 //
 // File is generated by gobind. Do not edit.
 
-#ifndef __GoVars_H__
-#define __GoVars_H__
+#ifndef __Vars_H__
+#define __Vars_H__
 
 @import Foundation;
-#include "GoUniverse.objc.h"
+#include "Universe.objc.h"
 
 
-@class GoVarsS;
-@protocol GoVarsI;
-@class GoVarsI;
+@class VarsS;
+@protocol VarsI;
+@class VarsI;
 
-@interface GoVarsS : NSObject <goSeqRefInterface> {
+@interface VarsS : NSObject <goSeqRefInterface> {
 }
 @property(strong, readonly) id _ref;
 
 - (id)initWithRef:(id)ref;
 @end
 
-@protocol GoVarsI <NSObject>
+@protocol VarsI <NSObject>
 @end
 
-@interface GoVars : NSObject
+@interface Vars : NSObject
 + (BOOL) aBool;
 + (void) setABool:(BOOL)v;
 
@@ -40,8 +40,8 @@
 + (NSString*) aString;
 + (void) setAString:(NSString*)v;
 
-+ (GoVarsS*) aStructPtr;
-+ (void) setAStructPtr:(GoVarsS*)v;
++ (VarsS*) aStructPtr;
++ (void) setAStructPtr:(VarsS*)v;
 
 + (long) anInt;
 + (void) setAnInt:(long)v;
@@ -58,14 +58,14 @@
 + (int8_t) anInt8;
 + (void) setAnInt8:(int8_t)v;
 
-+ (id<GoVarsI>) anInterface;
-+ (void) setAnInterface:(id<GoVarsI>)v;
++ (id<VarsI>) anInterface;
++ (void) setAnInterface:(id<VarsI>)v;
 
 @end
 
-@class GoVarsI;
+@class VarsI;
 
-@interface GoVarsI : NSObject <goSeqRefInterface, GoVarsI> {
+@interface VarsI : NSObject <goSeqRefInterface, VarsI> {
 }
 @property(strong, readonly) id _ref;
 
diff --git a/bind/testdata/vars.objc.m.golden b/bind/testdata/vars.objc.m.golden
index 669a2ac..2aee07b 100644
--- a/bind/testdata/vars.objc.m.golden
+++ b/bind/testdata/vars.objc.m.golden
@@ -6,10 +6,10 @@
 #include <Foundation/Foundation.h>
 #include "seq.h"
 #include "_cgo_export.h"
-#include "GoVars.objc.h"
+#include "Vars.objc.h"
 
 
-@implementation GoVarsS {
+@implementation VarsS {
 }
 
 - (id)initWithRef:(id)ref {
@@ -21,7 +21,7 @@
 @end
 
 
-@implementation GoVarsI {
+@implementation VarsI {
 }
 
 - (instancetype)initWithRef:(id)ref {
@@ -33,7 +33,7 @@
 @end
 
 
-@implementation GoVars
+@implementation Vars
 + (void) setABool:(BOOL)v {
 	char _v = (char)v;
 	var_setvars_ABool(_v);
@@ -89,7 +89,7 @@
 	return _r0;
 }
 
-+ (void) setAStructPtr:(GoVarsS*)v {
++ (void) setAStructPtr:(VarsS*)v {
 	int32_t _v;
 	if ([v conformsToProtocol:@protocol(goSeqRefInterface)]) {
 		id<goSeqRefInterface> v_proxy = (id<goSeqRefInterface>)(v);
@@ -100,14 +100,14 @@
 	var_setvars_AStructPtr(_v);
 }
 
-+ (GoVarsS*) aStructPtr {
++ (VarsS*) aStructPtr {
 	int32_t r0 = var_getvars_AStructPtr();
-	GoVarsS* _r0 = nil;
+	VarsS* _r0 = nil;
 	GoSeqRef* _r0_ref = go_seq_from_refnum(r0);
 	if (_r0_ref != NULL) {
 		_r0 = _r0_ref.obj;
 		if (_r0 == nil) {
-			_r0 = [[GoVarsS alloc] initWithRef:_r0_ref];
+			_r0 = [[VarsS alloc] initWithRef:_r0_ref];
 		}
 	}
 	return _r0;
@@ -168,7 +168,7 @@
 	return _r0;
 }
 
-+ (void) setAnInterface:(id<GoVarsI>)v {
++ (void) setAnInterface:(id<VarsI>)v {
 	int32_t _v;
 	if ([v conformsToProtocol:@protocol(goSeqRefInterface)]) {
 		id<goSeqRefInterface> v_proxy = (id<goSeqRefInterface>)(v);
@@ -179,14 +179,14 @@
 	var_setvars_AnInterface(_v);
 }
 
-+ (id<GoVarsI>) anInterface {
++ (id<VarsI>) anInterface {
 	int32_t r0 = var_getvars_AnInterface();
-	GoVarsI* _r0 = nil;
+	VarsI* _r0 = nil;
 	GoSeqRef* _r0_ref = go_seq_from_refnum(r0);
 	if (_r0_ref != NULL) {
 		_r0 = _r0_ref.obj;
 		if (_r0 == nil) {
-			_r0 = [[GoVarsI alloc] initWithRef:_r0_ref];
+			_r0 = [[VarsI alloc] initWithRef:_r0_ref];
 		}
 	}
 	return _r0;
diff --git a/cmd/gobind/main.go b/cmd/gobind/main.go
index 48d9432..ef6e808 100644
--- a/cmd/gobind/main.go
+++ b/cmd/gobind/main.go
@@ -26,7 +26,7 @@
 	lang          = flag.String("lang", "java", "target language for bindings, either java, go, or objc (experimental).")
 	outdir        = flag.String("outdir", "", "result will be written to the directory instead of stdout.")
 	javaPkg       = flag.String("javapkg", "", "custom Java package path prefix used instead of the default 'go'. Valid only with -lang=java.")
-	prefix        = flag.String("prefix", "Go", "custom Objective-C name prefix used instead of the default 'Go'. Valid only with -lang=objc.")
+	prefix        = flag.String("prefix", "", "custom Objective-C name prefix used instead of the default 'Go'. Valid only with -lang=objc.")
 	bootclasspath = flag.String("bootclasspath", "", "Java bootstrap classpath.")
 	classpath     = flag.String("classpath", "", "Java classpath.")
 )
@@ -40,7 +40,7 @@
 
 	if *lang != "java" && *javaPkg != "" {
 		log.Fatalf("Invalid option -javapkg for gobind -lang=%s", *lang)
-	} else if *lang != "objc" && *prefix != "Go" {
+	} else if *lang != "objc" && *prefix != "" {
 		log.Fatalf("Invalid option -prefix for gobind -lang=%s", *lang)
 	}
 
diff --git a/cmd/gomobile/bind.go b/cmd/gomobile/bind.go
index c07c1a6..a3202f7 100644
--- a/cmd/gomobile/bind.go
+++ b/cmd/gomobile/bind.go
@@ -94,7 +94,7 @@
 	if bindJavaPkg != "" && ctx.GOOS != "android" {
 		return fmt.Errorf("-javapkg is supported only for android target")
 	}
-	if bindPrefix != bindPrefixDefault && ctx.GOOS != "darwin" {
+	if bindPrefix != "" && ctx.GOOS != "darwin" {
 		return fmt.Errorf("-prefix is supported only for ios target")
 	}
 
@@ -146,13 +146,11 @@
 	bindBootClasspath string // -bootclasspath
 )
 
-const bindPrefixDefault = "Go"
-
 func init() {
 	// bind command specific commands.
 	cmdBind.flag.StringVar(&bindJavaPkg, "javapkg", "",
 		"specifies custom Java package path prefix used instead of the default 'go'. Valid only with -target=android.")
-	cmdBind.flag.StringVar(&bindPrefix, "prefix", bindPrefixDefault,
+	cmdBind.flag.StringVar(&bindPrefix, "prefix", "",
 		"custom Objective-C name prefix used instead of the default 'Go'. Valid only with -target=ios.")
 	cmdBind.flag.StringVar(&bindClasspath, "classpath", "", "The classpath for imported Java classes. Valid only with -target=android.")
 	cmdBind.flag.StringVar(&bindBootClasspath, "bootclasspath", "", "The bootstrap classpath for imported Java classes. Valid only with -target=android.")
@@ -191,7 +189,7 @@
 
 func (b *binder) GenObjc(pkg *types.Package, allPkg []*types.Package, outdir string, wrappers []*objc.Named) (string, error) {
 	if pkg == nil {
-		bindPrefix = bindPrefixDefault
+		bindPrefix = ""
 	}
 	pkgName := ""
 	pkgPath := ""
@@ -202,7 +200,7 @@
 		pkgName = "universe"
 	}
 	bindOption := "-lang=objc"
-	if bindPrefix != bindPrefixDefault {
+	if bindPrefix != "" {
 		bindOption += fmt.Sprintf(" -prefix=%q", bindPrefix)
 	}
 
diff --git a/example/bind/ios/bind/ViewController.m b/example/bind/ios/bind/ViewController.m
index 0ef836b..aacbe7e 100644
--- a/example/bind/ios/bind/ViewController.m
+++ b/example/bind/ios/bind/ViewController.m
@@ -14,7 +14,7 @@
 
 - (void)loadView {
     [super loadView];
-    textLabel.text = GoHelloGreetings(@"iOS and Gopher");
+    textLabel.text = HelloGreetings(@"iOS and Gopher");
 }
 
 @end
diff --git a/example/ivy/ios/ivy/DocsController.m b/example/ivy/ios/ivy/DocsController.m
index 49525ad..641d6e3 100644
--- a/example/ivy/ios/ivy/DocsController.m
+++ b/example/ivy/ios/ivy/DocsController.m
@@ -15,7 +15,7 @@
 {
     [super viewDidLoad];
     UIWebView *webView = (UIWebView *)[self.view viewWithTag:11];
-    NSString *helpHTML = GoMobileHelp();
+    NSString *helpHTML = MobileHelp();
     [webView loadHTMLString:helpHTML baseURL:NULL];
     if ([self respondsToSelector:@selector(
                                      setAutomaticallyAdjustsScrollViewInsets:)]) {
diff --git a/example/ivy/ios/ivy/IvyController.m b/example/ivy/ios/ivy/IvyController.m
index 971a872..f8ccaea 100644
--- a/example/ivy/ios/ivy/IvyController.m
+++ b/example/ivy/ios/ivy/IvyController.m
@@ -78,8 +78,8 @@
             appendTape:[NSString stringWithFormat:@"<b>%@</b>", [self.input text]]];
         NSString *expr = [self.input.text stringByAppendingString:@"\n"];
         NSString *result;
-        NSError *err = [NSError alloc];
-        if (!GoMobileEval(expr, &result, &err)) {
+        NSError *err = MobileEval(expr, &result);
+        if (err != nil) {
             result = err.description;
         }
         result = [result