     func testSliceable() {
         var q: Queue = ["foo", "bar", "baz"]
         let index = q.startIndex.successor()
-        println(q[index])
-        let end = index.successor()
-        var s = q[index..<end]
+        var s = q[index..<index.successor()]
 
+        assertEqual(s.first, "bar")
         assertEqual(s.dequeue(), "bar")
-        assert(s.isEmpty)
-        assertNil(s.dequeue())
+        assertEmpty(s)
 
         assertEqual(q.dequeue(), "foo")
         assertEqual(q.dequeue(), "bar")
         assertEqual(q.dequeue(), "baz")
+        assertEmpty(q)
+    }
+
+    func assertEmpty<T>(var q: Queue<T>) {
+        assertEqual(q.isEmpty, true)
+        assertNil(q.first)
+        assertNil(q.dequeue())
     }
 }

        q.enqueue(4)
        assertEqual(q.dequeue(), 3)
        assertEqual(q.dequeue(), 4)
        assertNil(q.dequeue())
    }

    func testArrayLiteralConvertible() {


    func testEmptyQueue() {
        var q = Queue<Int>()
        assertEmpty(q)
    }

    func testEnqueueDequeue() {
