fold in features from Keith's blog post last month, and add a bit more to the