basic implementation of Map