Ready/95

Best to merge #141 before this, as it depends on #94 begin complete.