Extract to IMap interface
Revert back to using private readonly fields as this convey better meaning
Implemented IMap and reverted to using readonly fields as this convey better meaning of immutability
Reverted to using readonly fields