try to name this a bit better
make some more things private
stop using Option[Plan]
case class cleanups
eliminate Message