Support for List and Map

Although I guess we don't actually support something like `Option[Option[String]]` anyway, so that is a moot point (and a moot point for the writing code too). Still, would be good to have the logic all in the one place.