         return head
     }
     
+    /// Gets the parent index for an item at `index` in the `queue` array.
+    /// `index` must be greater than `0`.
     private func getParentIndex(index: Int) -> Int {
         assert(index > 0)
         return (index + 1) / 2 - 1
     }
     
+    /// Gets the child indexes for an item at `index` in the `queue` array.
+    /// - Returns: A 2-tuple with left (the index of the left child) and
+    /// right (the index of the right child).
     private func getChildIndexes(index: Int) -> (left: Int, right: Int) {
         let left = (index + 1) * 2 - 1
         let right = (index + 1) * 2
         return (left, right)
     }
     
+    /// Shifts the `Element` found at `index` in the `queue` array up the `Element` is misplaced.
     private func shiftUp(index: Int) {
         guard index > 0 else {
             return

        }
    }
    
    private func shiftDown(index: Int) {
        let childIndexes = getChildIndexes(index)
        let currentVal = queue[index].timeStep

        }
    }
    
    /// Inserts an `Element` into the `EventQueue` with the provided `event`, `playerNumber`,
    /// `timeStep` and any `otherData`.
    func insert(event: GameEvent, playerNumber: Int, timeStep: Int, otherData: AnyObject?) {
        queue.append((event, playerNumber, timeStep, otherData))
        shiftUp(count - 1)
    }
    
    /// Removes the `head` from the `EventQueue`.
    /// - Returns: The `Element` that was at the head of the queue.
    /// If the queue is empty, returns `nil`.
    func removeHead() -> Element? {
        guard count > 0 else {
            return nil
