pub trait Admin {
    fn new<S: Storage, A: Api, Q: Querier>(
        &self, 
        admin: Option<HumanAddr>, 
        deps: &mut Extern<S, A, Q>, 
        env: Env
    ) -> StdResult<InitResponse> { ... }
    fn change_admin<S: Storage, A: Api, Q: Querier>(
        &self, 
        address: HumanAddr, 
        deps: &mut Extern<S, A, Q>, 
        env: Env
    ) -> StdResult<HandleResponse> { ... }
    fn accept_admin<S: Storage, A: Api, Q: Querier>(
        &self, 
        deps: &mut Extern<S, A, Q>, 
        env: Env
    ) -> StdResult<HandleResponse> { ... }
    fn admin<S: Storage, A: Api, Q: Querier>(
        &self, 
        deps: &Extern<S, A, Q>
    ) -> StdResult<HumanAddr> { ... }
}