NB the traversal needs to be applicative not just pure
NB the traversal needs to be applicative not just pure