OO refactor
fun with driver code