add Map protocol