         }
         notesHolders[notesHolderIndex] = newNotesHolder
     }
-	
+
+    /**
+     Ties a note to the next note.
+     
+     - parameter noteIndex: The index of the note in the specified measure to begin the tie.
+     - parameter measureIndex: The index of the measure that contains the note at which the tie should begin.
+     - throws:
+        - `StaffError.NoteIndexoutOfRange`
+        - `StaffError.NoNextNoteToTie` if the note specified is the last note in the staff.
+        - `StaffError.MeasureIndexOutOfRange`
+        - `StaffError.RepeatedMeasureCannotHaveTie` if the index for the measure specified refers to a measure that is 
+            a repeat of another measure.
+        - `StaffError.InternalError`, `MeasureError.InternalError` if the function has an internal implementation error.
+        - `MeasureError.NoteIndexOutOfRange`
+     */
 	public mutating func startTieFromNoteAtIndex(noteIndex: Int, inMeasureAtIndex measureIndex: Int) throws {
 		try modifyTieForNoteAtIndex(noteIndex, inMeasureAtIndex: measureIndex, removeTie: false)
 	}
-	
+
+    /**
+     Removes the tie beginning at the note at the specified index.
+
+     - parameter noteIndex: The index of the note in the specified measure where the tie begins.
+     - parameter measureIndex: The index of the measure that contains the note at which the tie begins.
+     - throws:
+        - `StaffError.NoteIndexoutOfRange`
+        - `StaffError.NoNextNoteToTie` if the note specified is the last note in the staff.
+        - `StaffError.MeasureIndexOutOfRange`
+        - `StaffError.RepeatedMeasureCannotHaveTie` if the index for the measure specified refers to a measure that is
+            a repeat of another measure.
+        - `MeasureError.NoteIndexOutOfRange`
+        - `StaffError.InternalError`, `MeasureError.InternalError` if the function has an internal implementation error.
+     */
 	public mutating func removeTieFromNoteAtIndex(noteIndex: Int, inMeasureAtIndex measureIndex: Int) throws {
 		try modifyTieForNoteAtIndex(noteIndex, inMeasureAtIndex: measureIndex, removeTie: true)
 	}
-	
+
+    /**
+     - parameter measureIndex: The index of the measure to return.
+     - returns An `ImmutableMeasure` at the given index within the staff.
+     - throws:
+        - `StaffError.MeasureIndexOutOfRange`
+        - `StaffError.InternalError` if the function has an internal implementation error.
+     */
 	public func measureAtIndex(measureIndex: Int) throws -> ImmutableMeasure {
         let (notesHolderIndex, repeatMeasureIndex) = try notesHolderIndexFromMeasureIndex(measureIndex)
         if let measureRepeat = notesHolders[notesHolderIndex] as? MeasureRepeat,

        measureCount += repeatedMeasures.measureCount
	}

    public mutating func replaceMeasureAtIndex(measureIndex: Int, withNewMeasure newMeasure: Measure) throws {
        let (notesHolderIndex, repeatMeasureIndex) = try notesHolderIndexFromMeasureIndex(measureIndex)
        let newNotesHolder: NotesHolder

            }
            secondMeasure = try mutableMeasureFromNotesHolderIndex(secondNotesHolderIndex.notesHolderIndex, repeatMeasureIndex: secondNotesHolderIndex.repeatMeasureIndex)
            guard secondMeasure?.noteCount > 0 else {
                throw StaffError.NoNextNoteToTie
            }
        } else {
            secondMeasure = nil
