diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter_Test.java
index 5af39c7..9d6c459 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter_Test.java
@@ -105,18 +105,62 @@
   }
 
   // message Person {}
-  // service PersonService { rpc PersonRpc (Person) returns (Person); }
+  // service PersonService {}
 
   // message Person {
   // }
   //
   // service PersonService {
-  //   rpc PersonRpc ( Person ) returns ( Person );
   // }
   @Test public void should_format_service() {
     assertThatFormattingWorksCorrectly();
   }
 
+  // message Person {}
+  // service PersonService { rpc PersonRpc ( Person ) returns ( Person ); }
+
+  // message Person {
+  // }
+  //
+  // service PersonService {
+  //   rpc PersonRpc (Person) returns (Person);
+  // }
+  @Test public void should_format_rpc() {
+    assertThatFormattingWorksCorrectly();
+  }
+
+  // message Person {}
+  //
+  // service PersonService { stream PersonStream ( Person,Person ); }
+
+  // message Person {
+  // }
+  //
+  // service PersonService {
+  //   stream PersonStream (Person, Person);
+  // }
+  @Test public void should_format_stream() {
+    assertThatFormattingWorksCorrectly();
+  }
+
+  // syntax = 'proto2';package com.google.protobuf.test;import 'google/protobuf/descriptor.proto';import
+  // public 'address.proto';import weak 'salary.proto';option java_package = "com.foo.bar";option
+  // optimize_for = CODE_SIZE;
+
+  // syntax = 'proto2';
+  //
+  // package com.google.protobuf.test;
+  //
+  // import 'google/protobuf/descriptor.proto';
+  // import public 'address.proto';
+  // import weak 'salary.proto';
+  //
+  // option java_package = "com.foo.bar";
+  // option optimize_for = CODE_SIZE;
+  @Ignore public void should_format() {
+    assertThatFormattingWorksCorrectly();
+  }
+
   private void assertThatFormattingWorksCorrectly() {
     ICompositeNode rootNode = commentReader.rootNode();
     IFormattedRegion region = formatter.format(rootNode, 0, rootNode.getText().length());
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java
index 1d737e4..3e1509b 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java
@@ -41,12 +41,17 @@
     c.setLinewrap(1).after(g.getEnumElementRule());
     c.setLinewrap(1).after(g.getRpcRule());
     c.setLinewrap(2).after(g.getServiceRule());
+    c.setLinewrap(1).after(g.getStreamRule());
     for (Keyword k : g.findKeywords(EQUAL.toString())) {
       c.setSpace(space()).around(k);
     }
     for (Keyword k : g.findKeywords(SEMICOLON.toString())) {
       c.setNoSpace().before(k);
     }
+    for (Keyword k : g.findKeywords(",")) {
+      c.setNoSpace().before(k);
+      c.setSpace(space()).after(k);
+    }
     for (Keyword k : g.findKeywords(OPENING_CURLY_BRACKET.toString())) {
       c.setIndentationIncrement().after(k);
       c.setLinewrap(1).after(k);
@@ -55,10 +60,10 @@
       c.setIndentationDecrement().before(k);
       c.setLinewrap(1).after(k);
     }
-    for (Keyword k : g.findKeywords(OPENING_BRACKET.toString())) {
+    for (Keyword k : g.findKeywords(OPENING_BRACKET.toString(), "(")) {
       c.setNoSpace().after(k);
     }
-    for (Keyword k : g.findKeywords(CLOSING_BRACKET.toString())) {
+    for (Keyword k : g.findKeywords(CLOSING_BRACKET.toString(), ")")) {
       c.setNoSpace().before(k);
     }
   }
