 		return true
 	}
 	
-	// MARK: - Remove element(s)
-	
+	// Removes all values.
+	// Complexity: O(1)
 	public func removeAll() {
 		head = nil
 		count = 0
 	}
 	
+	// Removes the last value.
+	// Complexity: O(n)
 	@discardableResult public func removeLast() -> Value? {
 		if count <= 1 {
 			let headValue = head?.value

		}
	}
	
	@discardableResult public func remove(at index: Int) -> Value? {
		if index < 0 || index >= count { return nil }
		if index == count - 1 { return removeLast() }

		return rem?.value
	}
	
	// Returns a value at the index.
	// Complexity: O(n)
	public subscript(index: Int) -> Value? {
		return nodeAt(index: index)?.value
	}
	
	// Convenience of use.
	private typealias Node = ListNode<Value>
	
	// Linked list node structure.
	private final class ListNode<Value> {
		let value: Value
		var next: Node?
