code cleanup
implement  permissions abstract