I think we are abusing implicits here. As a general rule we should never use implicits to "massage" one type into a different type.  This can result in very confusing code and error messages.  It took me a while to track how this implicit was allowing us to call `typeId` which is then allowing us to figure out what column builder to create for a given DataType.