Might be a good use case for an implicit class here, 

```scala
implicit class SavableImage[K <% TileIdWritable: ClassTag, V <% ArgWritable: ClassTag](val rdd:Rdd[(K,V)]) {
  def save(path) = SaveImageFunctions.save(rdd, path)
}
```

Then SaveImageFunctions would change from a class to an object, and 'save' would take an rdd as an argument, which seems more natural then SaveImageFunctions being a class.