add set_permission function