diff --git a/82802ab.c b/82802ab.c
index 28e0d7a..38a5ce2 100644
--- a/82802ab.c
+++ b/82802ab.c
@@ -172,7 +172,7 @@
 		printf("ERASE FAILED\n");
 		return -1;
 	}
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		printf("%04d at address: 0x%08x", i, i * page_size);
 		write_page_82802ab(bios, buf + i * page_size,
diff --git a/board_enable.c b/board_enable.c
index 503f391..7874963 100644
--- a/board_enable.c
+++ b/board_enable.c
@@ -161,7 +161,7 @@
 
 	dev = pci_dev_find(0x1106, 0x3177);	/* VT8235 ISA bridge */
 	if (!dev) {
-		fprintf(stderr, "\nERROR: VT8235 ISA Bridge not found.\n");
+		fprintf(stderr, "\nERROR: VT8235 ISA bridge not found.\n");
 		return -1;
 	}
 
@@ -355,9 +355,9 @@
 
 struct board_pciid_enable board_pciid_enables[] = {
 	{0x10de, 0x0360, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-	 "gigabyte", "m57sli", "GIGABYTE GA-M57SLI", it87xx_probe_spi_flash},
+	 "gigabyte", "m57sli", "GIGABYTE GA-M57SLI-S4", it87xx_probe_spi_flash},
 	{0x10de, 0x03e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-	 "gigabyte", "m61ps3", "GIGABYTE GA-M61P-S3", it87xx_probe_spi_flash},
+	 "gigabyte", "m61p", "GIGABYTE GA-M61P-S3", it87xx_probe_spi_flash},
 	{0x1022, 0x7468, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 	 "iwill", "dk8_htx", "IWILL DK8-HTX", w83627hf_gpio24_raise_2e},
 	{0x10de, 0x005e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -456,12 +456,12 @@
 		board = board_match_pci_card_ids();
 
 	if (board) {
-		printf("Found board \"%s\": Enabling flash write... ",
+		printf("Found board \"%s\": enabling flash write... ",
 			board->name);
 
 		ret = board->enable(board->name);
 		if (ret)
-			printf("Failed!\n");
+			printf("FAILED!\n");
 		else
 			printf("OK.\n");
 	}
diff --git a/chipset_enable.c b/chipset_enable.c
index ab9a92c..631ac29 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -499,12 +499,12 @@
 	}
 
 	if (dev) {
-		printf("Found chipset \"%s\": Enabling flash write... ",
+		printf("Found chipset \"%s\", enabling flash write... ",
 		       enables[i].name);
 
 		ret = enables[i].doit(dev, enables[i].name);
 		if (ret)
-			printf("Failed!\n");
+			printf("FAILED!\n");
 		else
 			printf("OK.\n");
 	}
diff --git a/flashrom.c b/flashrom.c
index 7587ac7..33d3738 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -143,7 +143,7 @@
 		flash->virtual_memory = bios;
 
 		if (flash->probe(flash) == 1) {
-			printf("%s found at physical address: 0x%lx\n",
+			printf("%s found at physical address 0x%lx.\n",
 			       flash->name, flash_baseaddr);
 			return flash;
 		}
@@ -161,7 +161,7 @@
 	int total_size = flash->total_size * 1024;
 	volatile uint8_t *bios = flash->virtual_memory;
 
-	printf("Verifying flash ");
+	printf("Verifying flash... ");
 
 	if (verbose)
 		printf("address: 0x00000000\b\b\b\b\b\b\b\b\b\b");
@@ -174,7 +174,7 @@
 			if (verbose) {
 				printf("0x%08x ", idx);
 			}
-			printf("- FAILED\n");
+			printf("FAILED!\n");
 			return 1;
 		}
 
@@ -184,7 +184,7 @@
 	if (verbose)
 		printf("\b\b\b\b\b\b\b\b\b\b ");
 
-	printf("- VERIFIED         \n");
+	printf("VERIFIED.          \n");
 
 	return 0;
 }
@@ -369,7 +369,7 @@
 		exit(1);
 	}
 
-	printf("Flash part is %s (%d KB)\n", flash->name, flash->total_size);
+	printf("Flash part is %s (%d KB).\n", flash->name, flash->total_size);
 
 	if (!(read_it | write_it | verify_it | erase_it)) {
 		printf("No operations were specified.\n");
diff --git a/jedec.c b/jedec.c
index 49b1002..46153dd 100644
--- a/jedec.c
+++ b/jedec.c
@@ -281,12 +281,12 @@
 	// dumb check if erase was successful.
 	for (i = 0; i < total_size; i++) {
 		if (bios[i] != (uint8_t) 0xff) {
-			printf("ERASE FAILED @%d, val %02x\n", i, bios[i]);
+			printf("ERASE FAILED @%d, val %02x!\n", i, bios[i]);
 			return -1;
 		}
 	}
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		printf("%04d at address: 0x%08x", i, i * page_size);
 		write_page_write_jedec(bios, buf + i * page_size,
diff --git a/layout.c b/layout.c
index 6f87dd6..cbd8791 100644
--- a/layout.c
+++ b/layout.c
@@ -47,14 +47,14 @@
 	}
 
 	printf_debug("LinuxBIOS last image size "
-		     "(not rom size) is %d bytes.\n", *walk);
+		     "(not ROM size) is %d bytes.\n", *walk);
 
 	walk--;
 	mainboard_part = strdup((const char *)(bios + size - *walk));
 	walk--;
 	mainboard_vendor = strdup((const char *)(bios + size - *walk));
-	printf_debug("MANUFACTURER: %s\n", mainboard_vendor);
-	printf_debug("MAINBOARD ID: %s\n", mainboard_part);
+	printf_debug("Manufacturer: %s\n", mainboard_vendor);
+	printf_debug("Mainboard ID: %s\n", mainboard_part);
 
 	/*
 	 * If lb_vendor is not set, the linuxbios table was
@@ -63,7 +63,7 @@
 
 	if (!lb_vendor || !lb_part) {
 		printf("Note: If the following flash access fails, "
-		       "you might need to specify -m <vendor>:<mainboard>\n");
+		       "you might need to specify -m <vendor>:<mainboard>.\n");
 		return 0;
 	}
 
@@ -104,7 +104,7 @@
 	romlayout = fopen(name, "r");
 
 	if (!romlayout) {
-		fprintf(stderr, "ERROR: Could not open rom layout (%s).\n",
+		fprintf(stderr, "ERROR: Could not open ROM layout (%s).\n",
 			name);
 		return -1;
 	}
@@ -154,8 +154,7 @@
 			return i;
 		}
 	}
-	printf("not found.\n");
-	// Not found. Error.
+	printf("not found.\n"); // Not found. Error.
 
 	return -1;
 }
diff --git a/lbtable.c b/lbtable.c
index a95f920..a56afc7 100644
--- a/lbtable.c
+++ b/lbtable.c
@@ -105,26 +105,26 @@
 		printf_debug("Found canidate at: %08lx-%08lx\n",
 			     addr, addr + head->table_bytes);
 		if (head->header_bytes != sizeof(*head)) {
-			fprintf(stderr, "Header bytes of %d are incorrect\n",
+			fprintf(stderr, "Header bytes of %d are incorrect.\n",
 				head->header_bytes);
 			continue;
 		}
 		if (count_lb_records(head) != head->table_entries) {
-			fprintf(stderr, "bad record count: %d\n",
+			fprintf(stderr, "Bad record count: %d.\n",
 				head->table_entries);
 			continue;
 		}
 		if (compute_checksum((uint8_t *) head, sizeof(*head)) != 0) {
-			fprintf(stderr, "bad header checksum\n");
+			fprintf(stderr, "Bad header checksum.\n");
 			continue;
 		}
 		if (compute_checksum(recs, head->table_bytes)
 		    != head->table_checksum) {
-			fprintf(stderr, "bad table checksum: %04x\n",
+			fprintf(stderr, "Bad table checksum: %04x.\n",
 				head->table_checksum);
 			continue;
 		}
-		fprintf(stdout, "Found LinuxBIOS table at: %08lx\n", addr);
+		fprintf(stdout, "Found LinuxBIOS table at 0x%08lx.\n", addr);
 		return head;
 
 	};
@@ -140,7 +140,7 @@
 
 	rec = (struct lb_mainboard *)ptr;
 	max_size = rec->size - sizeof(*rec);
-	printf("vendor id: %.*s part id: %.*s\n",
+	printf("Vendor ID: %.*s, part ID: %.*s\n",
 	       max_size - rec->vendor_idx,
 	       rec->strings + rec->vendor_idx,
 	       max_size - rec->part_number_idx,
@@ -151,7 +151,7 @@
 		 rec->strings + rec->part_number_idx);
 
 	if (lb_part) {
-		printf("overwritten by command line, vendor id: %s part id: %s\n", lb_vendor, lb_part);
+		printf("Overwritten by command line, vendor ID: %s, part ID: %s.\n", lb_vendor, lb_part);
 	} else {
 		lb_part = strdup(part);
 		lb_vendor = strdup(vendor);
@@ -201,7 +201,7 @@
 	if (lb_table) {
 		unsigned long addr;
 		addr = ((char *)lb_table) - ((char *)low_1MB);
-		printf_debug("lb_table found at address %p\n", lb_table);
+		printf_debug("LinuxBIOS table found at %p.\n", lb_table);
 		rec = (struct lb_record *)(((char *)lb_table) + lb_table->header_bytes);
 		last = (struct lb_record *)(((char *)rec) + lb_table->table_bytes);
 		printf_debug("LinuxBIOS header(%d) checksum: %04x table(%d) checksum: %04x entries: %d\n",
diff --git a/m29f400bt.c b/m29f400bt.c
index 962d88c..40b219c 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -124,7 +124,7 @@
 	volatile uint8_t *bios = flash->virtual_memory;
 
 	//erase_m29f400bt (flash);
-	printf("Programming Page:\n ");
+	printf("Programming page:\n ");
 	/*********************************
 	*Pages for M29F400BT:
 	* 16	0x7c000		0x7ffff		TOP
@@ -175,7 +175,7 @@
 {
 	volatile uint8_t *bios = flash->virtual_memory;
 
-	printf("Programming Page:\n ");
+	printf("Programming page:\n ");
 	/*********************************
 	*Pages for M29F400BT:
 	* 16	0x7c000		0x7ffff		TOP
diff --git a/msys_doc.c b/msys_doc.c
index 3b4064d..1d80f46 100644
--- a/msys_doc.c
+++ b/msys_doc.c
@@ -169,10 +169,10 @@
 	return (1);
 	erase_md2802(flash);
 	if (*bios != (uint8_t) 0xff) {
-		printf("ERASE FAILED\n");
+		printf("ERASE FAILED!\n");
 		return -1;
 	}
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		printf("%04d at address: 0x%08x", i, i * page_size);
 		//write_page_md2802(bios, buf + i * page_size, bios + i * page_size, page_size);
diff --git a/mx29f002.c b/mx29f002.c
index 802e54f..7de4502 100644
--- a/mx29f002.c
+++ b/mx29f002.c
@@ -88,7 +88,7 @@
 	erase_29f002(flash);
 	//*bios = 0xF0;
 #if 1
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size; i++) {
 		/* write to the sector */
 		if ((i & 0xfff) == 0)
diff --git a/pm49fl004.c b/pm49fl004.c
index 1e39c41..e5fcd66 100644
--- a/pm49fl004.c
+++ b/pm49fl004.c
@@ -30,7 +30,7 @@
 	int page_size = flash->page_size;
 	volatile uint8_t *bios = flash->virtual_memory;
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		if ((i >= exclude_start_page) && (i < exclude_end_page))
 			continue;
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
index 3bfcb70..da7dc3f 100644
--- a/sharplhf00l04.c
+++ b/sharplhf00l04.c
@@ -164,10 +164,10 @@
 
 	erase_lhf00l04(flash);
 	if (*bios != 0xff) {
-		printf("ERASE FAILED\n");
+		printf("ERASE FAILED!\n");
 		return -1;
 	}
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		printf("%04d at address: 0x%08x", i, i * page_size);
 		write_page_lhf00l04(bios, buf + i * page_size,
diff --git a/spi.c b/spi.c
index 8a6a61c..5dae5be 100644
--- a/spi.c
+++ b/spi.c
@@ -123,7 +123,7 @@
 		busy = inb(port) & 0x80;
 	} while (busy);
 	if (readcnt > 3) {
-		printf("%s called with unsupported readcnt %i\n",
+		printf("%s called with unsupported readcnt %i.\n",
 			__FUNCTION__, readcnt);
 		return 1;
 	}
@@ -153,7 +153,7 @@
 		writeenc = 0x3;
 		break;
 	default:
-		printf("%s called with unsupported writecnt %i\n",
+		printf("%s called with unsupported writecnt %i.\n",
 			__FUNCTION__, writecnt);
 		return 1;
 	}
@@ -184,7 +184,7 @@
 
 	if (generic_spi_command(JEDEC_RDID_OUTSIZE, JEDEC_RDID_INSIZE, cmd, readarr))
 		return 1;
-	printf("RDID returned %02x %02x %02x\n", readarr[0], readarr[1], readarr[2]);
+	printf("RDID returned %02x %02x %02x.\n", readarr[0], readarr[1], readarr[2]);
 	return 0;
 }
 
diff --git a/sst28sf040.c b/sst28sf040.c
index 90bc177..85fb9d0 100644
--- a/sst28sf040.c
+++ b/sst28sf040.c
@@ -143,7 +143,7 @@
 
 	unprotect_28sf040(bios);
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* erase the page before programming */
 		erase_sector_28sf040(bios, i * page_size);
diff --git a/sst39sf020.c b/sst39sf020.c
index cfd4826..c4fd957 100644
--- a/sst39sf020.c
+++ b/sst39sf020.c
@@ -46,7 +46,7 @@
 
 	erase_chip_jedec(flash);
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* write to the sector */
 		printf("%04d at address: 0x%08x", i, i * page_size);
diff --git a/sst49lf040.c b/sst49lf040.c
index e2d0e79..5528b52 100644
--- a/sst49lf040.c
+++ b/sst49lf040.c
@@ -44,7 +44,7 @@
 	int page_size = flash->page_size;
 	volatile uint8_t *bios = flash->virtual_memory;
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* erase the page before programming
 		 * Chip erase only works in parallel programming mode
diff --git a/sst49lfxxxc.c b/sst49lfxxxc.c
index a6c0105..b6693ef 100644
--- a/sst49lfxxxc.c
+++ b/sst49lfxxxc.c
@@ -170,7 +170,7 @@
 	volatile uint8_t *bios = flash->virtual_memory;
 
 	write_lockbits_49lfxxxc(flash->virtual_registers, total_size, 0);
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* erase the page before programming */
 		erase_sector_49lfxxxc(bios, i * page_size);
diff --git a/sst_fwhub.c b/sst_fwhub.c
index ae98521..0f5dd15 100644
--- a/sst_fwhub.c
+++ b/sst_fwhub.c
@@ -83,12 +83,12 @@
 	// dumb check if erase was successful.
 	for (i = 0; i < total_size; i++) {
 		if (bios[i] != 0xff) {
-			printf("ERASE FAILED\n");
+			printf("ERASE FAILED!\n");
 			return -1;
 		}
 	}
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		printf("%04d at address: 0x%08x", i, i * page_size);
 		write_sector_jedec(bios, buf + i * page_size,
diff --git a/udelay.c b/udelay.c
index 2026d3e..f7257c9 100644
--- a/udelay.c
+++ b/udelay.c
@@ -56,5 +56,5 @@
 	micro = count / timeusec;
 
 	printf_debug("%ldM loops per second. ", (unsigned long)micro);
-	printf("ok\n");
+	printf("OK.\n");
 }
diff --git a/w49f002u.c b/w49f002u.c
index 246bae5..b7fca6b 100644
--- a/w49f002u.c
+++ b/w49f002u.c
@@ -30,7 +30,7 @@
 
 	erase_chip_jedec(flash);
 
-	printf("Programming Page: ");
+	printf("Programming page: ");
 	for (i = 0; i < total_size / page_size; i++) {
 		/* write to the sector */
 		printf("%04d at address: 0x%08x ", i, i * page_size);
