Merge branch 'a14n.issue-17'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ca35a3..13b41f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.4.0
+
+* Add a `new PriorityQueue()` constructor that forwards to `new
+  HeapPriorityQueue()`.
+
 ## 1.3.0
 
 * Add `lowerBound` to binary search for values that might not be present.
diff --git a/lib/priority_queue.dart b/lib/priority_queue.dart
index e1a0177..6272445 100644
--- a/lib/priority_queue.dart
+++ b/lib/priority_queue.dart
@@ -13,6 +13,19 @@
  */
 abstract class PriorityQueue<E> {
   /**
+   * Creates an empty [PriorityQueue].
+   *
+   * The created [PriorityQueue] is a plain [HeapPriorityQueue].
+   *
+   * The [comparison] is a [Comparator] used to compare the priority of
+   * elements. An element that compares as less than another element has
+   * a higher priority.
+   *
+   * If [comparison] is omitted, it defaults to [Comparable.compare].
+   */
+  factory PriorityQueue([int comparison(E e1, E e2)]) = HeapPriorityQueue<E>;
+
+  /**
    * Number of elements in the queue.
    */
   int get length;
diff --git a/pubspec.yaml b/pubspec.yaml
index 0679954..a2ca5d6 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: collection
-version: 1.3.0
+version: 1.4.0-dev
 author: Dart Team <misc@dartlang.org>
 description: Collections and utilities functions and classes related to collections.
 homepage: https://www.github.com/dart-lang/collection
diff --git a/test/priority_queue_test.dart b/test/priority_queue_test.dart
index 264bf94..cda0748 100644
--- a/test/priority_queue_test.dart
+++ b/test/priority_queue_test.dart
@@ -8,10 +8,20 @@
 import "package:test/test.dart";
 
 void main() {
+  testDefault();
   testInt(() => new HeapPriorityQueue<int>());
   testCustom((comparator) => new HeapPriorityQueue<C>(comparator));
 }
 
+void testDefault() {
+  test('new PriorityQueue() returns a HeapPriorityQueue', () {
+    expect(new PriorityQueue<int>(),
+        new isInstanceOf<HeapPriorityQueue<int>>());
+  });
+  testInt(() => new PriorityQueue<int>());
+  testCustom((comparator) => new PriorityQueue<C>(comparator));
+}
+
 void testInt(PriorityQueue<int> create()) {
   for (int count in [1, 5, 127, 128]) {
     testQueue("int:$count",