Yes, specifiedHash should not be visible to consumers of the API.  GeoHash should have a factory and private constructor args:

```scala
class GeoHash(val x: Double, ...., val prec: Int, specStr: Option[String] = None) {
   // public member
   lazy  val hash = specStr.getOrElse(computeHash)
}

object GeoHash {
   def apply(s: String) = new GeoHash(.....)
}
```