This is included in #11. There's overlap here since this patch builds on the last.