implement self access