Dealing with types permissions and constraints