diff --git a/apic.go b/apic.go
index ded1b99..29be91d 100644
--- a/apic.go
+++ b/apic.go
@@ -83,10 +83,10 @@
 // Create a new emitter object.
 func yaml_emitter_initialize(emitter *yaml_emitter_t) bool {
 	*emitter = yaml_emitter_t{
-		buffer:         make([]byte, output_buffer_size),
-		raw_buffer:     make([]byte, 0, output_raw_buffer_size),
-		states:         make([]yaml_emitter_state_t, 0, initial_stack_size),
-		events:         make([]yaml_event_t, 0, initial_queue_size),
+		buffer:     make([]byte, output_buffer_size),
+		raw_buffer: make([]byte, 0, output_raw_buffer_size),
+		states:     make([]yaml_emitter_state_t, 0, initial_stack_size),
+		events:     make([]yaml_event_t, 0, initial_queue_size),
 	}
 	return true
 }
diff --git a/yamlprivateh.go b/yamlprivateh.go
index fd8414b..1c0b23d 100644
--- a/yamlprivateh.go
+++ b/yamlprivateh.go
@@ -114,8 +114,8 @@
 // Check if the character is a line break or NUL.
 func is_breakz(b []byte, i int) bool {
 	//return is_break(b, i) || is_z(b, i)
-	return (// is_break:
-		b[i] == '\r' || // CR (#xD)
+	return (        // is_break:
+	b[i] == '\r' || // CR (#xD)
 		b[i] == '\n' || // LF (#xA)
 		b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
 		b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
@@ -127,8 +127,8 @@
 // Check if the character is a line break, space, or NUL.
 func is_spacez(b []byte, i int) bool {
 	//return is_space(b, i) || is_breakz(b, i)
-	return (// is_space:
-		b[i] == ' ' ||
+	return ( // is_space:
+	b[i] == ' ' ||
 		// is_breakz:
 		b[i] == '\r' || // CR (#xD)
 		b[i] == '\n' || // LF (#xA)
@@ -141,8 +141,8 @@
 // Check if the character is a line break, space, tab, or NUL.
 func is_blankz(b []byte, i int) bool {
 	//return is_blank(b, i) || is_breakz(b, i)
-	return (// is_blank:
-		b[i] == ' ' || b[i] == '\t' ||
+	return ( // is_blank:
+	b[i] == ' ' || b[i] == '\t' ||
 		// is_breakz:
 		b[i] == '\r' || // CR (#xD)
 		b[i] == '\n' || // LF (#xA)
