Permission factory and specification