     #endif
     return (red, green, blue, alpha)
   }
-  
-  
+
+
   /// **Mechanica**
   ///
   /// Returns the components (in 8 bit) that make up the color in the sRGB color space.
-  public final var rgba8Bit: (red: UInt8, green: UInt8, blue: UInt8, alpha: UInt8)? {
-    guard let components = rgba else { return nil }
+  public final var rgba8Bit: (red: UInt8, green: UInt8, blue: UInt8, alpha: UInt8) {
+    guard let components = rgba else { fatalError("Couldn't calculate RGBA values") }
     return (red: UInt8(components.red * 255), green: UInt8(components.green * 255), blue: UInt8(components.blue * 255), alpha: UInt8(components.alpha * 255))
   }
-  
+
   /// **Mechanica**
   ///
   /// Returns an UInt32 representation of `self` in the sRGB space without alpha channel.
-  private final var rgb32Bit: UInt32 {
-    guard let components = rgba8Bit else { fatalError("Couldn't calculate RGBA values") }
+  public final var rgb32Bit: UInt32 {
+    let components = rgba8Bit
     return (UInt32(components.red) << 16) | (UInt32(components.green) << 8) | UInt32(components.blue)
   }
-  
+
   /// **Mechanica**
   ///
   /// Returns an UInt32 representation of `self` in the sRGB space with alpha channel.
-  private final var rgba32Bit: UInt32 {
-    guard let components = rgba8Bit else { fatalError("Couldn't calculate RGBA values.") }
+  public final var rgba32Bit: UInt32 {
+    let components = rgba8Bit
     return (UInt32(components.red) << 32) | (UInt32(components.green) << 16) | UInt32(components.blue) << 8 | UInt32(components.alpha)
   }
-  
+
   /// **Mechanica**
   ///
   /// Creates a `new` color in the **sRGB** color space that matches (or *closely approximates*) the current color.

    let a = CGFloat((hexEquivalent & 0x000000FF) >> 00) / 255.0
    self.init(red: r, green: g, blue: b, alpha: a)
  }
  
  /// **Mechanica**
  ///
  /// Returns the hexadecimal string representation of `self` in the sRGB space.
  public final var hexString: String {
    return String(format:"#%06x", rgb32Bit)
  }
  
  // MARK: - HSBA
  
  /// **Mechanica**
  ///
  /// Returns the components that make up the color in the HSBA color space.

    #endif
    return (hue: hue, saturation: saturation, brightness: brightness, alpha: alpha)
  }

  /// **Mechanica**
  ///
  /// Returns a `new` color derived from `self` lightened increasing the brightness by a `percentage` in the HSB color space.
  public final func lightened(byIncreasingBrightness percentage: CGFloat = 0.1) -> Color? {
    if percentage == 0 { return self.copy() as? Color }
    let converter: ColorConverter = {
      guard let hsba = $0.hsba else { return nil }
      //let percentage: CGFloat = min(max(percentage, -1), 1)
      //let newBrightness = min(max(hsba.brightness + percentage, -1), 1)
      return Color(hue: hsba.hue, saturation: hsba.saturation, brightness: hsba.brightness + percentage, alpha: hsba.alpha)

    }
    return processingColor(using: converter)
  }

  /// **Mechanica**
  ///
  /// Returns a `new` color derived from `self` darkened decreasing the brightness by a `percentage` in the HSB color space.
  public final func darkened(byDecreasingBrightness percentage: CGFloat = 0.1) -> Color? {
    if percentage == 0 { return self.copy() as? Color }
    let converter: ColorConverter = {
      guard let hsba = $0.hsba else { return nil }
