diff --git a/Projects/AVRISP/Lib/ISPTarget.h b/Projects/AVRISP/Lib/ISPTarget.h
index 2af4541a990c3185cc2effd62f34a84b026354b9..62d8bbb4bc3c187c3e67bf54281c71eaf0c05128 100644
--- a/Projects/AVRISP/Lib/ISPTarget.h
+++ b/Projects/AVRISP/Lib/ISPTarget.h
@@ -61,13 +61,16 @@
 		/** Total number of allowable ISP programming speeds supported by the device */
 		#define TOTAL_ISP_PROGRAMMING_SPEEDS  7
 
+		/** Timeout in milliseconds of target busy-wait loops waiting for a command to complete */
+		#define TARGET_BUSY_TIMEOUT_MS        100
+
 	/* Function Prototypes: */
-			uint8_t ISPTarget_GetSPIPrescalerMask(void);
-			void    ISPTarget_ChangeTargetResetLine(const bool ResetTarget);
-			uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint16_t PollAddress,
-			                                      const uint8_t PollValue, const uint8_t DelayMS,
-			                                      const uint8_t ReadMemCommand);
-			uint8_t ISPTarget_WaitWhileTargetBusy(void);
-			void    ISPTarget_LoadExtendedAddress(void);
+		uint8_t ISPTarget_GetSPIPrescalerMask(void);
+		void    ISPTarget_ChangeTargetResetLine(const bool ResetTarget);
+		uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint16_t PollAddress,
+		                                      const uint8_t PollValue, const uint8_t DelayMS,
+		                                      const uint8_t ReadMemCommand);
+		uint8_t ISPTarget_WaitWhileTargetBusy(void);
+		void    ISPTarget_LoadExtendedAddress(void);
 
 #endif
diff --git a/Projects/AVRISP/Lib/PDIProtocol.h b/Projects/AVRISP/Lib/PDIProtocol.h
index f2c38d5960459f801eab2518e5a7b530f2ace8c5..c1fbef466a9a98216aae37b143e33de39aa5414a 100644
--- a/Projects/AVRISP/Lib/PDIProtocol.h
+++ b/Projects/AVRISP/Lib/PDIProtocol.h
@@ -54,7 +54,7 @@
 				#define ENABLE_PDI_PROTOCOL
 			#endif
 		#endif
-
+	
 	/* Macros: */
 		#define XPRG_CMD_ENTER_PROGMODE             0x01
 		#define XPRG_CMD_LEAVE_PROGMODE             0x02
diff --git a/Projects/AVRISP/Lib/PDITarget.h b/Projects/AVRISP/Lib/PDITarget.h
index da89d55f1dbb9c288fe223c440fee8addf0ddbb6..cf7780c17987d67fbd7b8d3ed20ce89b379b5922 100644
--- a/Projects/AVRISP/Lib/PDITarget.h
+++ b/Projects/AVRISP/Lib/PDITarget.h
@@ -68,9 +68,11 @@
 			#define BITBANG_PDICLOCK_MASK    RESET_LINE_MASK
 		#endif
 		
+		/** Total number of bits in a single USART frame */
 		#define BITS_IN_PDI_FRAME        12
 		
-		#define PDI_NVM_TIMEOUT_MS       200
+		/** Timeout in milliseconds of a PDI busy-wait command */
+		#define PDI_NVM_TIMEOUT_MS       100
 		
 		#define PDI_CMD_LDS              0x00
 		#define PDI_CMD_LD               0x20
diff --git a/Projects/AVRISP/Lib/TINYNVM.c b/Projects/AVRISP/Lib/TINYNVM.c
index 515e113859186f11dc5483d3b7af5ba6365f3373..206ea39f21b838b37083818b92516fb3981fa3e4 100644
--- a/Projects/AVRISP/Lib/TINYNVM.c
+++ b/Projects/AVRISP/Lib/TINYNVM.c
@@ -38,107 +38,6 @@
 
 #if defined(ENABLE_TPI_PROTOCOL) || defined(__DOXYGEN__)
 
-/** Sends the given NVM register address to the target.
- *
- *  \param[in] Register  NVM register whose absolute address is to be sent
- */
-void TINYNVM_SendNVMRegAddress(const uint8_t Register)
-{
-	// TODO
-}
-
-/** Sends the given 32-bit absolute address to the target.
- *
- *  \param[in] AbsoluteAddress  Absolute address to send to the target
- */
-void TINYNVM_SendAddress(const uint32_t AbsoluteAddress)
-{
-	// TODO
-}
-
-/** Waits while the target's NVM controller is busy performing an operation, exiting if the
- *  timeout period expires.
- *
- *  \return Boolean true if the NVM controller became ready within the timeout period, false otherwise
- */
-bool TINYNVM_WaitWhileNVMControllerBusy(void)
-{
-	// TODO
-	return false;
-}
-
-/** Retrieves the CRC value of the given memory space.
- *
- *  \param[in]  CRCCommand  NVM CRC command to issue to the target
- *  \param[out] CRCDest     CRC Destination when read from the target
- *
- *  \return Boolean true if the command sequence complete successfully
- */
-bool TINYNVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest)
-{
-	// TODO
-	return true;
-}
-
-/** Reads memory from the target's memory spaces.
- *
- *  \param[in]  ReadAddress  Start address to read from within the target's address space
- *  \param[out] ReadBuffer   Buffer to store read data into
- *  \param[in]  ReadSize     Number of bytes to read
- *
- *  \return Boolean true if the command sequence complete successfully
- */
-bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, const uint16_t ReadSize)
-{
-	// TODO
-	return true;
-}
-
-/** Writes byte addressed memory to the target's memory spaces.
- *
- *  \param[in]  WriteCommand  Command to send to the device to write each memory byte
- *  \param[in]  WriteAddress  Start address to write to within the target's address space
- *  \param[in]  WriteBuffer   Buffer to source data from
- *
- *  \return Boolean true if the command sequence complete successfully
- */
-bool TINYNVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t* WriteBuffer)
-{
-	// TODO
-	return true;
-}
-
-/** Writes page addressed memory to the target's memory spaces.
- *
- *  \param[in]  WriteBuffCommand  Command to send to the device to write a byte to the memory page buffer
- *  \param[in]  EraseBuffCommand  Command to send to the device to erase the memory page buffer
- *  \param[in]  WritePageCommand  Command to send to the device to write the page buffer to the destination memory
- *  \param[in]  PageMode          Bitfield indicating what operations need to be executed on the specified page
- *  \param[in]  WriteAddress      Start address to write the page data to within the target's address space
- *  \param[in]  WriteBuffer       Buffer to source data from
- *  \param[in]  WriteSize         Number of bytes to write
- *
- *  \return Boolean true if the command sequence complete successfully
- */
-bool TINYNVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand,
-                               const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress,
-                               const uint8_t* WriteBuffer, const uint16_t WriteSize)
-{
-	// TODO
-	return true;
-}
-
-/** Erases a specific memory space of the target.
- *
- *  \param[in] EraseCommand  NVM erase command to send to the device
- *  \param[in] Address  Address inside the memory space to erase
- *
- *  \return Boolean true if the command sequence complete successfully
- */
-bool TINYNVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address)
-{
-	// TODO
-	return true;
-}
+// TODO
 
 #endif
diff --git a/Projects/AVRISP/Lib/TINYNVM.h b/Projects/AVRISP/Lib/TINYNVM.h
index 585fce8c9b87aa4c4c8be7243fdb6eeb54180448..eca3c98b88a5054c2b6e374092f8546c34e34e75 100644
--- a/Projects/AVRISP/Lib/TINYNVM.h
+++ b/Projects/AVRISP/Lib/TINYNVM.h
@@ -43,6 +43,7 @@
 		
 		#include <LUFA/Common/Common.h>
 		
+		#include "TPIProtocol.h"
 		#include "TPITarget.h"
 	
 	/* Preprocessor Checks: */
@@ -56,18 +57,6 @@
 		#endif
 
 	/* Defines: */
-		#define TINY_NVM_BUSY_TIMEOUT_MS       200
-
-	/* Function Prototypes: */
-		void TINYNVM_SendNVMRegAddress(const uint8_t Register);
-		void TINYNVM_SendAddress(const uint32_t AbsoluteAddress);
-		bool TINYNVM_WaitWhileNVMControllerBusy(void);
-		bool TINYNVM_GetMemoryCRC(const uint8_t CRCCommand, uint32_t* const CRCDest);
-		bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, const uint16_t ReadSize);
-		bool TINYNVM_WriteByteMemory(const uint8_t WriteCommand, const uint32_t WriteAddress, const uint8_t* WriteBuffer);
-		bool TINYNVM_WritePageMemory(const uint8_t WriteBuffCommand, const uint8_t EraseBuffCommand,
-		                               const uint8_t WritePageCommand, const uint8_t PageMode, const uint32_t WriteAddress,
-		                               const uint8_t* WriteBuffer, const uint16_t WriteSize);
-		bool TINYNVM_EraseMemory(const uint8_t EraseCommand, const uint32_t Address);
+		#define TINY_NVM_BUSY_TIMEOUT_MS       100
 
 #endif
diff --git a/Projects/AVRISP/Lib/TPITarget.h b/Projects/AVRISP/Lib/TPITarget.h
index e11e075514c62530557882904fad52115e3452c7..596bdce216509a1e97b0abf89d9e298191e5f676 100644
--- a/Projects/AVRISP/Lib/TPITarget.h
+++ b/Projects/AVRISP/Lib/TPITarget.h
@@ -64,9 +64,11 @@
 		#define BITBANG_TPICLOCK_PIN     PINB
 		#define BITBANG_TPICLOCK_MASK    (1 << 1)
 		
+		/** Total number of bits in a single USART frame */
 		#define BITS_IN_TPI_FRAME        12
 		
-		#define TPI_NVM_TIMEOUT_MS       200
+		/** Timeout in milliseconds of a PDI busy-wait command */
+		#define TPI_NVM_TIMEOUT_MS       100
 
 		#define TPI_CMD_SLD              0x20
 		#define TPI_CMD_SST              0x60
diff --git a/Projects/AVRISP/Lib/V2Protocol.h b/Projects/AVRISP/Lib/V2Protocol.h
index b43ae89c56694b317d1bf0cdc5a7a3edf9d8f375..ef4d2eb63a3b84c73f840644307068c7c187a817 100644
--- a/Projects/AVRISP/Lib/V2Protocol.h
+++ b/Projects/AVRISP/Lib/V2Protocol.h
@@ -59,14 +59,11 @@
 
 	/* Macros: */
 		/** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing */
-		#define PROGRAMMER_ID             "AVRISP_MK2"
-
-		/** Timeout in milliseconds of target busy-wait loops waiting for a command to complete */
-		#define TARGET_BUSY_TIMEOUT_MS    240
+		#define PROGRAMMER_ID     "AVRISP_MK2"
 
 	/* External Variables: */
 		extern uint32_t CurrentAddress;
-		extern bool MustSetAddress;
+		extern bool     MustSetAddress;
 
 	/* Function Prototypes: */
 		void V2Protocol_ProcessCommand(void);
diff --git a/Projects/AVRISP/Lib/V2ProtocolParams.c b/Projects/AVRISP/Lib/V2ProtocolParams.c
index f900d7ecd8a5887c9e186299eb4a4e5bd11a6513..6b7f84aa34d291c35f7a8ee1a1ff7c34debb14e4 100644
--- a/Projects/AVRISP/Lib/V2ProtocolParams.c
+++ b/Projects/AVRISP/Lib/V2ProtocolParams.c
@@ -44,43 +44,43 @@ static ParameterItem_t ParameterTable[] =
 	{
 		{ .ParamID          = PARAM_BUILD_NUMBER_LOW,
 		  .ParamValue       = (LUFA_VERSION_INTEGER >> 8),
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_BUILD_NUMBER_HIGH,
 		  .ParamValue       = (LUFA_VERSION_INTEGER & 0xFF),
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_HW_VER,
 		  .ParamValue       = 0x00,
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_SW_MAJOR,
 		  .ParamValue       = 0x01,
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_SW_MINOR,
-		  .ParamValue       = 0x0C,
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamValue       = 0x0D,
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_VTARGET,
 		  .ParamValue       = 0x32,
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_SCK_DURATION,
 		  .ParamValue       = (TOTAL_ISP_PROGRAMMING_SPEEDS - 1),
-		  .ParamPrivileges = PARAM_PRIV_READ | PARAM_PRIV_WRITE },
+		  .ParamPrivileges  = PARAM_PRIV_READ | PARAM_PRIV_WRITE },
 
 		{ .ParamID          = PARAM_RESET_POLARITY,
 		  .ParamValue       = 0x00,
-		  .ParamPrivileges = PARAM_PRIV_WRITE                   },
+		  .ParamPrivileges  = PARAM_PRIV_WRITE                   },
 
 		{ .ParamID          = PARAM_STATUS_TGT_CONN,
 		  .ParamValue       = 0x00,
-		  .ParamPrivileges = PARAM_PRIV_READ                    },
+		  .ParamPrivileges  = PARAM_PRIV_READ                    },
 
 		{ .ParamID          = PARAM_DISCHARGEDELAY,
 		  .ParamValue       = 0x00,
-		  .ParamPrivileges = PARAM_PRIV_WRITE                   },
+		  .ParamPrivileges  = PARAM_PRIV_WRITE                   },
 	};
 
 
@@ -173,6 +173,6 @@ static ParameterItem_t* V2Params_GetParamFromTable(const uint8_t ParamID)
 		if (ParamID == ParameterTable[TableIndex].ParamID)
 		  return &ParameterTable[TableIndex];
 	}
-	
+
 	return NULL;
 }