+               uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode,
+                                                     const uint16_t PollAddress,
+                                                     const uint8_t PollValue,
+                                                     const uint8_t DelayMS,
+                                                     const uint8_t ReadMemCommand);
+
+       /* Inline Functions: */
+               /** Sends a byte of ISP data to the attached target, using the appropriate SPI hardware or
+                *  software routines depending on the selected ISP speed.
+                *
+                *  \param[in] Byte  Byte of data to send to the attached target
+                */
+               static inline void ISPTarget_SendByte(const uint8_t Byte)
+               {
+                       if (HardwareSPIMode)
+                         SPI_SendByte(Byte);
+                       else
+                         ISPTarget_TransferSoftSPIByte(Byte);
+               }
+
+               /** Receives a byte of ISP data from the attached target, using the appropriate
+                *  SPI hardware or software routines depending on the selected ISP speed.
+                *
+                *  \return Received byte of data from the attached target
+                */
+               static inline uint8_t ISPTarget_ReceiveByte(void)
+               {
+                       if (HardwareSPIMode)
+                         return SPI_ReceiveByte();
+                       else
+                         return ISPTarget_TransferSoftSPIByte(0x00);
+               }
+
+               /** Sends and receives a byte of ISP data to and from the attached target, using the
+                *  appropriate SPI hardware or software routines depending on the selected ISP speed.
+                *
+                *  \param[in] Byte  Byte of data to send to the attached target
+                *
+                *  \return Received byte of data from the attached target
+                */
+               static inline uint8_t ISPTarget_TransferByte(const uint8_t Byte)
+               {
+                       if (HardwareSPIMode)
+                         return SPI_TransferByte(Byte);
+                       else
+                         return ISPTarget_TransferSoftSPIByte(Byte);
+               }