remove cpp14ism and require Permutable concept
reformated