public Position getPosition(final IndexPosition key, final Player access) throws GameException {
   if ((key.getCurveIndex() >= 0) && (key.getCurveIndex() < NUM_ROWS))
     return basePosition
         .add(rowOffset.scale(key.getCurveIndex()))
         .add(columnOffset.scale(key.getCardIndex()));
   else if (CURVE_CMDS == key.getCurveIndex())
     return cmdPosition.add(cmdOffset.scale(key.getCardIndex()));
   else return _mplayerManager.getPosition(key, access);
 }