long, but a nice read