   (collection [this collection-name]
     "Returns a collection based on the name passed.
     Calling this function will not create a new collection, it just binds a Store and Collection name.")
+  (create-collection [this collection-name]
+    "Creates a new collection or does nothing if collection already exists.
+    This function returns a future with the created collection.")
   (delete-collection [this collection-name]
-    "Deletes the collection of the name given.")
+    "Deletes the collection of the name given and does nothing if the collection doesn't exist.
+    Returns a future.")
   (all-collections [this]
-    "Returns a seq of all existing collections.")
+    "Returns a channel that outputs of all existing collections.")
   (close [this]
     "Close connection with the Store.")
   (details [this]


(defprotocol ReadTx
  (all-statements [this]
    "Accepts nothing but returns a seq of all Statements in the Collection.")
  (match-statements [this pattern]
    "")
  (all-rules [this]
    "")
  (match-rules [this pattern]
    ""))

(defprotocol WriteTx
  (new-identifier [this]
    "Returns a unique, new identifier in the form _:NUMBER")
  (add-statement [this statement]
    "Accepts a statement tuple")
  (remove-statement [this statement]

(defprotocol LigatureCollection
  "Manages a collection of Statements and Rules, supports ontologies, and querying."
  (collection-name [this])
  (readTx [this]
    "Returns a future with a ReadTx.")
  (write [this f]
    "Returns a future with a ReadTx/WriteTx."))
;  (sparql-query [this query]
;    "")
;  (wander-query [this query]
