actually model should be a class

it was previously a function on a class.. Hoist root is now just an
object/singleton