What's not directly represented in free monad should be just handled via some helpers