   }
 }
 
-public struct Box<Scalar: TensorFlowScalar & Comparable & Hashable & Codable>: Space {
+// TODO: How can we make this also support Scalar: BinaryFloatingPoint where 
+// Scalar.RawSignificand: FixedWidthInteger?
+public struct Box<Scalar: TensorFlowScalar & FixedWidthInteger & Codable>: Space {
   public let low: ShapedArray<Scalar>
   public let high: ShapedArray<Scalar>
   public let shape: [Int]

  }

  public func sample<G: RandomNumberGenerator>(generator: inout G) -> ShapedArray<Scalar> {
    // TODO: high = self.high if self.dtype.kind == 'f' else self.high.astype('int64') + 1
    // TODO: return self.np_random.uniform(low=self.low, high=high, size=self.shape).astype(self.dtype)
    fatalError("Not implemented.")
  }

  public func contains(_ value: ShapedArray<Scalar>) -> Bool {

  }

  public func sample<G: RandomNumberGenerator>(generator: inout G) -> ShapedArray<Int32> {
    return ShapedArray(Int32.random(in: 0..<size, using: &generator))
  }

  public func contains(_ value: ShapedArray<Int32>) -> Bool {
