swappable Permission model