clean clean with applicative functors