diff --git a/CHANGELOG.md b/CHANGELOG.md
index a893df7..2723445 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.2
+
+* Move split conditional operators to the beginning of the next line.
+
 # 0.1.1
 
 * Support formatting enums (#120).
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index 93fc466..c699bec 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -371,19 +371,21 @@
   visitConditionalExpression(ConditionalExpression node) {
     _writer.nestExpression();
     visit(node.condition);
-    space();
 
     _writer.startSpan();
-    token(node.question);
 
     // If we split after one clause in a conditional, always split after both.
     _writer.startMultisplit();
     _writer.multisplit(nest: true, space: true);
+    token(node.question);
+    space();
+
     visit(node.thenExpression);
 
-    space();
-    token(node.colon);
     _writer.multisplit(nest: true, space: true);
+    token(node.colon);
+    space();
+
     visit(node.elseExpression);
 
     _writer.endMultisplit();
diff --git a/pubspec.yaml b/pubspec.yaml
index f26c7f7..1c89811 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: dart_style
-version: 0.1.1
+version: 0.1.2
 author: Dart Team <misc@dartlang.org>
 description: Opinionated, automatic Dart source code formatter.
 homepage: https://github.com/dart-lang/dart_style
diff --git a/test/regression/112.stmt b/test/regression/112.stmt
index 0f8b7ce..3446a9f 100644
--- a/test/regression/112.stmt
+++ b/test/regression/112.stmt
@@ -5,9 +5,9 @@
             something.field.where((i) => i is SomeClassGoesHere),
             key: (i) => i.someField.name);
 <<<
-    var initializers = something == null ?
-        {} :
-        new Map.fromIterable(
+    var initializers = something == null
+        ? {}
+        : new Map.fromIterable(
             something.field.where((i) => i is SomeClassGoesHere),
             key: (i) => i.someField.name);
 >>> (indent 4)
@@ -15,7 +15,7 @@
             outputDir, uri, results.libraries, results.rules, formatOutput) :
         new JSGenerator(outputDir, uri, results.libraries, results.rules);
 <<<
-    var cg = outputDart ?
-        new DartGenerator(
-            outputDir, uri, results.libraries, results.rules, formatOutput) :
-        new JSGenerator(outputDir, uri, results.libraries, results.rules);
\ No newline at end of file
+    var cg = outputDart
+        ? new DartGenerator(
+            outputDir, uri, results.libraries, results.rules, formatOutput)
+        : new JSGenerator(outputDir, uri, results.libraries, results.rules);
\ No newline at end of file
diff --git a/test/regression/115.stmt b/test/regression/115.stmt
index 8843ed0..8afac52 100644
--- a/test/regression/115.stmt
+++ b/test/regression/115.stmt
@@ -24,6 +24,6 @@
         // Indexing send-sets have an argument for the index.
         (selector.isIndexSet ? 1 : 0) +
             // Non-increment send-sets have one more argument.
-            (ast.Operator.INCREMENT_OPERATORS.contains(op.source) ?
-                0 :
-                1) == node.argumentCount());
\ No newline at end of file
+            (ast.Operator.INCREMENT_OPERATORS.contains(op.source)
+                ? 0
+                : 1) == node.argumentCount());
\ No newline at end of file
diff --git a/test/regression/122.unit b/test/regression/122.unit
index b4a0794..376f0ef 100644
--- a/test/regression/122.unit
+++ b/test/regression/122.unit
@@ -5,11 +5,11 @@
     defaults.xsrfCookieName] :
     null;
 <<<
-var xsrfValue = _urlIsSameOrigin(url) ?
-    _cookies[xsrfCookieName != null ?
-        xsrfCookieName :
-        defaults.xsrfCookieName] :
-    null;
+var xsrfValue = _urlIsSameOrigin(url)
+    ? _cookies[xsrfCookieName != null
+        ? xsrfCookieName
+        : defaults.xsrfCookieName]
+    : null;
 >>>
 class _Streams {
   _Streams(this._scope, this._exceptionHandler, _Streams inheritStreams)
@@ -20,7 +20,7 @@
 <<<
 class _Streams {
   _Streams(this._scope, this._exceptionHandler, _Streams inheritStreams)
-      : _typeCounts = inheritStreams == null ?
-          new HashMap<String, int>() :
-          new HashMap.from(inheritStreams._typeCounts);
+      : _typeCounts = inheritStreams == null
+          ? new HashMap<String, int>()
+          : new HashMap.from(inheritStreams._typeCounts);
 }
\ No newline at end of file
diff --git a/test/regression/44.stmt b/test/regression/44.stmt
index ad582a9..9532288 100644
--- a/test/regression/44.stmt
+++ b/test/regression/44.stmt
@@ -55,7 +55,7 @@
 }
 <<<
 void main() {
-  var xxxxxxxYyyyyyyy = aaaabbb ?
-      CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm1(arg00000000000) :
-      CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm(arg1111111111111);
+  var xxxxxxxYyyyyyyy = aaaabbb
+      ? CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm1(arg00000000000)
+      : CCCCCCCCCCCC.mmmmmmmmmmmmmmmmmm(arg1111111111111);
 }
\ No newline at end of file
diff --git a/test/regression/45.stmt b/test/regression/45.stmt
index 071771b..de743a8 100644
--- a/test/regression/45.stmt
+++ b/test/regression/45.stmt
@@ -5,7 +5,7 @@
 }
 <<<
 foo() {
-  if (xxxxxxxxxxxxxxxx || xxxxxxxxxxxxxxxxxxxxx) return xxxxxxxxxxxxxx ?
-      xxxxxxxxxxxxxxxxxxxx :
-      xxxxxxxxxxxxxxxxxxxxxxxxxx;
+  if (xxxxxxxxxxxxxxxx || xxxxxxxxxxxxxxxxxxxxx) return xxxxxxxxxxxxxx
+      ? xxxxxxxxxxxxxxxxxxxx
+      : xxxxxxxxxxxxxxxxxxxxxxxxxx;
 }
\ No newline at end of file
diff --git a/test/regression/80.unit b/test/regression/80.unit
index 0cafb9c..39199d8 100644
--- a/test/regression/80.unit
+++ b/test/regression/80.unit
@@ -40,32 +40,34 @@
 <<<
 void main(List argv) {
   // This is ok (it moves the ? and : to the ends of the previous lines)
-  var cg = outputDart ?
-      new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
-          formatOutput) :
-      new B(outputDir, uri, results.libraries, results.infoMap, results.rules);
+  var cg = outputDart
+      ? new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
+          formatOutput)
+      : new B(
+          outputDir, uri, results.libraries, results.infoMap, results.rules);
 
   // This gets rewritten to something much harder to read
   //  var cg = outputDart ?
   //  new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
   //      results.rules, formatOutput) : new BLongerClass(
   //      outputDir, uri, results.libraries, results.infoMap, results.rules);
-  var cg = outputDart ?
-      new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
-          results.rules, formatOutput) :
-      new BLongerClass(
+  var cg = outputDart
+      ? new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
+          results.rules, formatOutput)
+      : new BLongerClass(
           outputDir, uri, results.libraries, results.infoMap, results.rules);
 
   // OK, left unchanged
-  var cg = outputDart ?
-      new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
-          formatOutput) :
-      new B(outputDir, uri, results.libraries, results.infoMap, results.rules);
+  var cg = outputDart
+      ? new A(outputDir, uri, results.libraries, results.infoMap, results.rules,
+          formatOutput)
+      : new B(
+          outputDir, uri, results.libraries, results.infoMap, results.rules);
 
   // Bad, as above
-  var cg = outputDart ?
-      new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
-          results.rules, formatOutput) :
-      new BLongerClass(
+  var cg = outputDart
+      ? new ALongerClass(outputDir, uri, results.libraries, results.infoMap,
+          results.rules, formatOutput)
+      : new BLongerClass(
           outputDir, uri, results.libraries, results.infoMap, results.rules);
 }
\ No newline at end of file
diff --git a/test/splitting/expressions.stmt b/test/splitting/expressions.stmt
index 5564020..ed1f452 100644
--- a/test/splitting/expressions.stmt
+++ b/test/splitting/expressions.stmt
@@ -33,15 +33,15 @@
 >>> split conditional because then doesn't fit
 var kind = element != null ? longArgument : arg;
 <<<
-var kind = element != null ?
-    longArgument :
-    arg;
+var kind = element != null
+    ? longArgument
+    : arg;
 >>> split conditional because else doesn't fit
 var kind = element != null ? argument : secondArgumentThatIsReallyLong;
 <<<
-var kind = element != null ?
-    argument :
-    secondArgumentThatIsReallyLong;
+var kind = element != null
+    ? argument
+    : secondArgumentThatIsReallyLong;
 >>> unsplit operator chains before and after block
 first + second + () {body;} + third + fourth;
 <<<
@@ -97,10 +97,10 @@
 >>> conditional operands are nested
 identifier ? identifier ? someParticularlyLongOperand : someParticularlyLongOperand : identifier ? someParticularlyLongOperand : someParticularlyLongOperand;
 <<<
-identifier ?
-    identifier ?
-        someParticularlyLongOperand :
-        someParticularlyLongOperand :
-    identifier ?
-        someParticularlyLongOperand :
-        someParticularlyLongOperand;
\ No newline at end of file
+identifier
+    ? identifier
+        ? someParticularlyLongOperand
+        : someParticularlyLongOperand
+    : identifier
+        ? someParticularlyLongOperand
+        : someParticularlyLongOperand;
\ No newline at end of file
