Note that #18 is work in progress