     let factory: (ItemType) -> Component
     let loadHead: Trigger<Void?>
     let loadTail: Trigger<Void?>
+
+    public init(flexOptions: FlexOptions,
+                childMargin: Edges,
+                source: @escaping ListItemSource<ItemType>,
+                factory: @escaping (ItemType) -> Component,
+                loadHead: Trigger<Void?>,
+                loadTail: Trigger<Void?>) {
+      self.flexOptions = flexOptions
+      self.childMargin = childMargin
+      self.source = source
+      self.factory = factory
+      self.loadHead = loadHead
+      self.loadTail = loadTail
+    }
   }
   public typealias PropType = Options
   public typealias StateType = [ListBatch<ItemType>]

    self.initiatedFetch = true
    props.source(nil, nil, { (status) in
      switch status {
      case .ok(let batch):
        updateState(state: [batch])
        break
      case .error(let e):
        print("Error loading initial list data:\(e)")

    self.initiatedFetch = true
    props.source(nil, state?.last?.after, { (status) in
      switch status {
      case .success(let batch):
        var newState = self.state ?? []
        newState.append(batch)
        self.updateState(state: newState)
        break
      case .error(let e):
        print("Error loading initial list data:\(e)")
