Split admin and non-admin logic