add internal map representation
make mapElement an interface