           }
           else if (modMethod(PressTimer)[i] == 0)
           {
-            modMethod(PressTimer)[i] = -1; // signal that the key has fired
-            PressKey(modMethod(GetKeyVal)(i, modMethod(PressCount)[i] - 1), modMethod(GetKeyType)(i, modMethod(PressCount)[i] - 1));
+            modMethod(FireTapDance)(i);
             if (!modMethod(KeyIsDown)[i])
             {
               modMethod(KeyUp)(i, 19);

  {
    for (byte i = 0; i < modMethod(MAX_INDEX); i++)
    {
      if ((type != 19 || val != i) && modMethod(PressCount)[i] > 0)
      {
        modMethod(PressTimer)[i] = -1; // signal that the key has fired
        PressKey(modMethod(GetKeyVal)(i, modMethod(PressCount)[i] - 1), modMethod(GetKeyType)(i, modMethod(PressCount)[i] - 1));
        if (!modMethod(KeyIsDown)[i])
        {
          modMethod(KeyUp)(i, 19);


}

void modMethod(FireTapDance)(byte id)
{
  byte count = modMethod(PressCount)[id] - 1;
  char val = modMethod(GetKeyVal)(id, count);
  byte type = modMethod(GetKeyType)(id, count);
  modMethod(PressTimer)[id] = -1; // signal that the key has fired
  PressKey(val, type);
}

byte modMethod(GetLength)(byte id)
{

