yet more optimising