why does it not follow the (err, d) pattern?