-               /* Paged mode memory programming */
-               for (uint16_t CurrentByte = 0; CurrentByte < Write_Memory_Params.BytesToWrite; CurrentByte++)
-               {
-                       bool    IsOddByte   = (CurrentByte & 0x01);
-                       uint8_t ByteToWrite = *(NextWriteByte++);
-               
-                       SPI_SendByte(Write_Memory_Params.ProgrammingCommands[0]);
-                       SPI_SendByte(CurrentAddress >> 8);
-                       SPI_SendByte(CurrentAddress & 0xFF);
-                       SPI_SendByte(ByteToWrite);
-                       
-                       /* AVR FLASH addressing requires us to modify the write command based on if we are writing a high
-                        * or low byte at the current word address */
-                       if (V2Command == CMD_PROGRAM_FLASH_ISP)
-                         Write_Memory_Params.ProgrammingCommands[0] ^= READ_WRITE_HIGH_BYTE_MASK;
-
-                       /* Check to see the write completion method, to see if we have a valid polling address */
-                       if (!(PollAddress) && (ByteToWrite != PollValue))
-                       {
-                               if (IsOddByte && (V2Command == CMD_PROGRAM_FLASH_ISP))
-                                 Write_Memory_Params.ProgrammingCommands[2] |= READ_WRITE_HIGH_BYTE_MASK;
-
-                               PollAddress = (CurrentAddress & 0xFFFF);                                
-                       }               
-
-                       /* EEPROM increments the address on each byte, flash needs to increment on each word */
-                       if (IsOddByte || (V2Command == CMD_PROGRAM_EEPROM_ISP))
-                         CurrentAddress++;
-               }
-               
-               /* If the current page must be committed, send the PROGRAM PAGE command to the target */
-               if (Write_Memory_Params.ProgrammingMode & PROG_MODE_COMMIT_PAGE_MASK)
+               ISPTarget_SendByte(Write_Memory_Params.ProgrammingCommands[0]);
+               ISPTarget_SendByte(CurrentAddress >> 8);
+               ISPTarget_SendByte(CurrentAddress & 0xFF);
+               ISPTarget_SendByte(ByteToWrite);
+
+               /* AVR FLASH addressing requires us to modify the write command based on if we are writing a high
+                * or low byte at the current word address */
+               if (V2Command == CMD_PROGRAM_FLASH_ISP)
+                 Write_Memory_Params.ProgrammingCommands[0] ^= READ_WRITE_HIGH_BYTE_MASK;
+
+               /* Check to see if we have a valid polling address */
+               if (!(PollAddress) && (ByteToWrite != PollValue))