Some of the ivory cleanup work

Just wanted to get this out so the list of changes doesn't get too big
Can we just make this a case class, as in `MrContext(id: String) {}` and then get rid of all the lazy val's. I don't think there is any benefit to making this abstract, and you have to where the cost of messy lazy val locking and the abstract val both of which are easy to mess up.