renamed header guards, added permutation identity ctor