             }
         }
     }
-    public init(min:Int = 0, max:Int, reversible:Bool = false) {
+    public init(min:T = T.zero, max:T, mode:Mode? = nil) {
         guard min < max else {
             preconditionFailure("Attempt to initialize @Cycled property wrapper with min value that is greater than or equal to max value.")
         }
         self.min = min
         self.max = max
-        self.reversible = reversible
+        self.mode = mode ?? .repeatable
         self.number = min
     }
-    public init(wrappedValue startingAt:Int, min:Int = 0, max:Int, reversible:Bool = false) {
+    public init(wrappedValue startingAt:T, min:T = T.zero, max:T, mode:Mode? = nil) {
         guard min < max else {
             preconditionFailure("Attempt to initialize @Cycled property wrapper with min value that is greater than or equal to max value.")
         }

        }
        self.min = min
        self.max = max
        self.reversible = reversible
        self._number = State(wrappedValue:startingAt)
    }
    public var atMin:Bool {
        wrappedValue == min
    }
    public var atMax:Bool {
        wrappedValue == max
    }
    // Couldn't get this to work.. would just hit Int +=
    // Wanted syntax like: counter += 1

}
#endif

/// Property that cycles through numbers
/// resetting to 0 when `max` is reached.
///
/// Alternatively, pass `min` to reset to
