This is really so verbose that I don't think it's a benefit to merge this (yet)...