         }
     }
     
-    func adjusted(downBy precision: QuadKeyPrecision) -> QuadKey {
+    public func adjusted(downBy precision: QuadKeyPrecision) -> QuadKey {
         let shift = QuadKey(2*precision)
         return self >> shift
     }
     
-    var bitmaskString: String {
+    public var bitmaskString: String {
         var string = ""
         var value = self
         for _ in 1...64 {

        self.init(latitudePart: latitudePart, longitudePart: longitudePart)
    }
    
    init(quadKey: QuadKey) {
        self.init(quadKey: quadKey, precision: QuadKeyPrecision.max)
    }
}

public struct QuadKeyBounds {
    let min: QuadKey
    let max: QuadKey
    
    init(min: QuadKey, max: QuadKey) {
        self.min = min
        self.max = max
    }
    
    init(quadKey: QuadKey, precision: QuadKeyPrecision) {
        let min = quadKey << QuadKey(64 - 2*precision)
        let mask = precision >= 32 ? QuadKey(0) : QuadKey.max >> QuadKey(2*precision)
        let max = min | mask

        self.init(quadKey)
    }
    
    public init(int64: Int64) {
        if int64 >= 0 {
            self.init(UInt64(int64) + QuadKey.unsignedConversionConstant)
        } else {
