code: def position(self):
          
          return {k.upper(): v for k, v in self._position.items()}
docs: Instead of sending M114.2 we are storing target values in
          self._position since movement and home commands are blocking and
          assumed to go the correct place.
  
          Cases where Smoothie would not be in the correct place (such as if a
          belt slips) would not be corrected by getting position with M114.2
          because Smoothie would also not be aware of slippage.