diff --git a/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c b/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c
index 03d3070947d339284efcb04a724a75745836a920..87651e9060f0ff3c812108a3d37f84ae6be5f258 100644
--- a/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c
+++ b/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c
@@ -33,18 +33,18 @@
 /** Sends the given data directly to the printer via the data endpoints, for the sending of print commands in printer
  *  languages accepted by the attached printer (e.g. PCL).
  *
- *  \param[in] PrinterCommands  Pointer to the input buffer containing the printer data to send
+ *  \param[in] PrinterCommands  Pointer to a structure containing the commands and length of the data to send
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
-uint8_t Printer_SendData(char* PrinterCommands, uint16_t DataLength)
+uint8_t Printer_SendData(Printer_Data_t* PrinterCommands)
 {
 	uint8_t ErrorCode;
 
 	Pipe_SelectPipe(PRINTER_DATA_OUT_PIPE);
 	Pipe_Unfreeze();
 	
-	if ((ErrorCode = Pipe_Write_Stream_LE(PrinterCommands, DataLength)) != PIPE_RWSTREAM_NoError)
+	if ((ErrorCode = Pipe_Write_Stream_LE(PrinterCommands->Data, PrinterCommands->Length)) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 
 	Pipe_ClearOUT();
diff --git a/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.h b/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.h
index b296d86f60c9ce1f1a0c336e71b199a37ca4bf51..9ba6d4d5de14efa6555b92ab00e0d967f6ff079a 100644
--- a/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.h
+++ b/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.h
@@ -53,8 +53,15 @@
 		/** Pipe number of the Printer data OUT pipe */
 		#define PRINTER_DATA_OUT_PIPE        2
 		
+	/* Type Defines: */
+		typedef struct
+		{
+			char*    Data;
+			uint16_t Length;
+		} Printer_Data_t;
+		
 	/* Function Prototypes: */
-		uint8_t Printer_SendData(char* PrinterCommands, uint16_t DataLength);
+		uint8_t Printer_SendData(Printer_Data_t* PrinterCommands);
 		uint8_t Printer_GetDeviceID(char* DeviceIDString, uint8_t BufferSize);
 		uint8_t Printer_GetPortStatus(uint8_t* PortStatus);
 		uint8_t Printer_SoftReset(void);
diff --git a/Demos/Host/Incomplete/PrinterHost/PrinterHost.c b/Demos/Host/Incomplete/PrinterHost/PrinterHost.c
index bff5e202051a4ea903ab1f9a3d54b8a0457cc225..9eb05abd80cd857dcc4138c8d2159e5cc5d66436 100644
--- a/Demos/Host/Incomplete/PrinterHost/PrinterHost.c
+++ b/Demos/Host/Incomplete/PrinterHost/PrinterHost.c
@@ -204,12 +204,16 @@ void USB_Printer_Host(void)
 			/* Indicate device busy via the status LEDs */
 			LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
 		
-			char PCL_Test_Page[]   = "\033%-12345X\033E LUFA PCL Test Page \033E\033%-12345X";
-//			char ESCP2_Test_Page[] =  "\033@\033i\001\033X\001\060\000\r\nLUFA ESCP/2 Test Page\r\n";
-
-			printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), (sizeof(PCL_Test_Page) - 1));
+			Printer_Data_t TestPageData =
+				{
+					"\033%-12345X\033E LUFA PCL Test Page \033E\033%-12345X",
+//					"\033@\033i\001\033X\001\060\000\r\nLUFA ESCP/2 Test Page\r\n",
+					(sizeof(TestPageData.Data) - 1)
+				};
+		
+			printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), TestPageData.Length);
 
-			if ((ErrorCode = Printer_SendData(PCL_Test_Page, (sizeof(PCL_Test_Page) - 1))) != PIPE_RWSTREAM_NoError)
+			if ((ErrorCode = Printer_SendData(&TestPageData)) != PIPE_RWSTREAM_NoError)
 			{
 				puts_P(PSTR(ESC_FG_RED "Error Sending Test Page.\r\n"));
 				printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);