diff --git a/objects/board_vpd_obj.c b/objects/board_vpd_obj.c
index a6576db..b6c2119 100644
--- a/objects/board_vpd_obj.c
+++ b/objects/board_vpd_obj.c
@@ -12,7 +12,6 @@
 	GDBusProxy *p;
 	GError *error;
 	GVariant *parm;
-	GVariant *result;
 
 	loop = g_main_loop_new(NULL, FALSE);
 
@@ -44,7 +43,7 @@
 	parm = g_variant_new("(v)",dict);
 
 	error = NULL;
-	result = g_dbus_proxy_call_sync(p,
+	g_dbus_proxy_call_sync(p,
 			"update",
 			parm,
 			G_DBUS_CALL_FLAGS_NONE,
diff --git a/objects/button_power_obj.c b/objects/button_power_obj.c
index f9a2b09..8c5ebb8 100644
--- a/objects/button_power_obj.c
+++ b/objects/button_power_obj.c
@@ -44,7 +44,7 @@
 	gchar buf[2];
 	buf[1] = '\0';
 	g_io_channel_seek_position( channel, 0, G_SEEK_SET, 0 );
-	GIOStatus rc = g_io_channel_read_chars( channel,
+	g_io_channel_read_chars(channel,
 			buf, 1,
 			&bytes_read,
 			&error );
@@ -84,9 +84,7 @@
 {
 	ObjectSkeleton *object;
 	//g_print ("Acquired a message bus connection: %s\n",name);
-	cmdline *cmd = user_data;
 	manager = g_dbus_object_manager_server_new(dbus_object_path);
-	int i=0;
 	gchar *s;
 	s = g_strdup_printf("%s/%s",dbus_object_path,instance_name);
 	object = object_skeleton_new(s);
diff --git a/objects/button_reset_obj.c b/objects/button_reset_obj.c
index 6e915a5..7fdad40 100644
--- a/objects/button_reset_obj.c
+++ b/objects/button_reset_obj.c
@@ -44,7 +44,7 @@
 	gchar buf[2];
 	buf[1] = '\0';
 	g_io_channel_seek_position( channel, 0, G_SEEK_SET, 0 );
-	GIOStatus rc = g_io_channel_read_chars( channel,
+	g_io_channel_read_chars( channel,
 			buf, 1,
 			&bytes_read,
 			&error );
@@ -84,9 +84,7 @@
 {
 	ObjectSkeleton *object;
 	//g_print ("Acquired a message bus connection: %s\n",name);
-	cmdline *cmd = user_data;
 	manager = g_dbus_object_manager_server_new(dbus_object_path);
-	int i=0;
 	gchar *s;
 	s = g_strdup_printf("%s/%s",dbus_object_path,instance_name);
 	object = object_skeleton_new(s);
diff --git a/objects/control_host_obj.c b/objects/control_host_obj.c
index 3e7f2ae..e8d1745 100644
--- a/objects/control_host_obj.c
+++ b/objects/control_host_obj.c
@@ -182,7 +182,6 @@
 {
 	ObjectSkeleton *object;
 	//g_print ("Acquired a message bus connection: %s\n",name);
-	cmdline *cmd = user_data;
 	manager = g_dbus_object_manager_server_new(dbus_object_path);
 
 	gchar *s;
diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index e661545..a3f7ac4 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -1,6 +1,8 @@
 #include <stdio.h>
 #include <stdbool.h>
 #include <string.h>
+#include <sys/wait.h>
+#include <sys/types.h>
 #include "interfaces/openbmc_intf.h"
 #include "openbmc.h"
 #include "object_mapper.h"
@@ -9,8 +11,6 @@
 static const gchar* dbus_object_path = "/org/openbmc/control/flash";
 static const gchar* dbus_name = "org.openbmc.control.Flash";
 static const gchar* FLASHER_BIN = "flasher.exe";
-static const gchar* DLOAD_BUS = "org.openbmc.managers.Download";
-static const gchar* DLOAD_OBJ = "/org/openbmc/managers/Download";
 
 static GDBusObjectManagerServer *manager = NULL;
 
@@ -142,9 +142,8 @@
 		gchar* error_msg,
 		gpointer user_data)
 {
-	int rc = 0;
 	SharedResource *lock = object_get_shared_resource((Object*)user_data);
-	gboolean locked = shared_resource_get_lock(lock);
+	shared_resource_get_lock(lock);
 	flash_set_status(flash, error_msg);
 	flash_complete_error(flash,invocation);
 	printf("ERROR: %s.  Clearing locks\n",error_msg);
@@ -161,7 +160,7 @@
 {
 	int rc = 0;
 	SharedResource *lock = object_get_shared_resource((Object*)user_data);
-	gboolean locked = shared_resource_get_lock(lock);
+	shared_resource_get_lock(lock);
 	flash_set_status(flash, "Flash Done");
 	flash_complete_done(flash,invocation);
 	printf("Flash Done. Clearing locks\n");
@@ -221,9 +220,9 @@
 		gpointer user_data)
 {
 	Flash *flash = object_get_flash((Object*)user_data);
-	SharedResource *lock = object_get_shared_resource((Object*)user_data);
+	object_get_shared_resource((Object*)user_data);
 	GVariantIter *iter = g_variant_iter_new(parameters);
-	GVariant* v_filename = g_variant_iter_next_value(iter);
+	g_variant_iter_next_value(iter);
 	GVariant* v_progress = g_variant_iter_next_value(iter);
 
 	uint8_t progress = g_variant_get_byte(v_progress);
@@ -235,55 +234,6 @@
 }
 
 static void
-on_flash_done(GDBusConnection* connection,
-		const gchar* sender_name,
-		const gchar* object_path,
-		const gchar* interface_name,
-		const gchar* signal_name,
-		GVariant* parameters,
-		gpointer user_data)
-{
-	Flash *flash = object_get_flash((Object*)user_data);
-	SharedResource *lock = object_get_shared_resource((Object*)user_data);
-	printf("Flash succeeded; unlocking flash\n");
-	shared_resource_set_lock(lock,false);
-	shared_resource_set_name(lock,"");
-	flash_set_status(flash,"Flash Done");
-}
-
-static void
-on_flash_error(GDBusConnection* connection,
-		const gchar* sender_name,
-		const gchar* object_path,
-		const gchar* interface_name,
-		const gchar* signal_name,
-		GVariant* parameters,
-		gpointer user_data)
-{
-	Flash *flash = object_get_flash((Object*)user_data);
-	SharedResource *lock = object_get_shared_resource((Object*)user_data);
-	printf("Flash Error; unlocking flash\n");
-	shared_resource_set_lock(lock,false);
-	shared_resource_set_name(lock,"");
-}
-
-static void
-on_download_error(GDBusConnection* connection,
-		const gchar* sender_name,
-		const gchar* object_path,
-		const gchar* interface_name,
-		const gchar* signal_name,
-		GVariant* parameters,
-		gpointer user_data)
-{
-	Flash *flash = object_get_flash((Object*)user_data);
-	SharedResource *lock = object_get_shared_resource((Object*)user_data);
-	printf("ERROR: FlashBios:  Download error; clearing flash lock\n");
-	shared_resource_set_lock(lock,false);
-	shared_resource_set_name(lock,"");
-}
-
-static void
 on_bus_acquired(GDBusConnection *connection,
 		const gchar *name,
 		gpointer user_data)
@@ -296,8 +246,7 @@
 	//TODO: don't use fixed buffer
 	char flasher_path[512];
 	memset(flasher_path, '\0', sizeof(flasher_path));
-	bool found = false;
-	gchar *flasher_file;
+	gchar *flasher_file = NULL;
 	int c = strlen(cmd->argv[0]);
 	while(c>0)
 	{
diff --git a/objects/flasher_obj.c b/objects/flasher_obj.c
index 2d80847..56ca61f 100644
--- a/objects/flasher_obj.c
+++ b/objects/flasher_obj.c
@@ -24,7 +24,6 @@
 #include "includes/openbmc.h"
 
 static const gchar* dbus_object_path = "/org/openbmc/control";
-static const gchar* dbus_object_name = "Flasher_0";
 static const gchar* dbus_name = "org.openbmc.control.Flasher";
 
 static GDBusObjectManagerServer *manager = NULL;
@@ -33,10 +32,7 @@
 
 #define PFLASH_VERSION	"0.8.6"
 
-static bool must_confirm = false;
-static bool dummy_run;
 static bool need_relock;
-static bool bmc_flash;
 #ifdef __powerpc__
 static bool using_sfc;
 #endif
@@ -54,7 +50,6 @@
 static uint8_t FLASH_OK = 0;
 static uint8_t FLASH_ERROR = 0x01;
 static uint8_t FLASH_SETUP_ERROR = 0x02;
-static struct blocklevel_device *bl;
 
 static int
 erase_chip(void)
@@ -80,7 +75,6 @@
 	GDBusProxy *proxy;
 	GError *error;
 	GVariant *parm = NULL;
-	GVariant *result;
 	error = NULL;
 	proxy = g_dbus_proxy_new_sync(connection,
 			G_DBUS_PROXY_FLAGS_NONE,
@@ -96,7 +90,7 @@
 	if(strcmp(method,"error")==0) {
 		parm = g_variant_new("(s)",error_msg);
 	}
-	result = g_dbus_proxy_call_sync(proxy,
+	g_dbus_proxy_call_sync(proxy,
 			method,
 			parm,
 			G_DBUS_CALL_FLAGS_NONE,
@@ -167,44 +161,6 @@
 }
 
 static void
-do_read_file(const char *file, uint32_t start, uint32_t size)
-{
-	int fd, rc;
-	ssize_t len;
-	uint32_t done = 0;
-
-	fd = open(file, O_WRONLY | O_TRUNC | O_CREAT, 00666);
-	if(fd == -1) {
-		perror("Failed to open file");
-		exit(1);
-	}
-	printf("Reading to \"%s\" from 0x%08x..0x%08x !\n",
-			file, start, size);
-
-	progress_init(size >> 8);
-	while(size) {
-		len = size > FILE_BUF_SIZE ? FILE_BUF_SIZE : size;
-		rc = flash_read(fl_chip, start, file_buf, len);
-		if(rc) {
-			fprintf(stderr, "Flash read error %d for"
-					" chunk at 0x%08x\n", rc, start);
-			exit(1);
-		}
-		rc = write(fd, file_buf, len);
-		if(rc < 0) {
-			perror("Error writing file");
-			exit(1);
-		}
-		start += len;
-		size -= len;
-		done += len;
-		progress_tick(done >> 8);
-	}
-	progress_end();
-	close(fd);
-}
-
-static void
 flash_access_cleanup_bmc(void)
 {
 	if(ffsh)
diff --git a/objects/host_watchdog_obj.c b/objects/host_watchdog_obj.c
index 0b3b149..2e0ef15 100644
--- a/objects/host_watchdog_obj.c
+++ b/objects/host_watchdog_obj.c
@@ -40,6 +40,7 @@
 		g_source_remove(watchdogid);
 		watchdogid = 0;
 	}
+	return TRUE;
 }
 
 static gboolean
@@ -51,6 +52,7 @@
 	g_print("Setting watchdog poll interval to: %d\n", interval);
 	watchdog_set_poll_interval(wd, interval);
 	watchdog_complete_set(wd,invocation);
+	return TRUE;
 }
 
 static gboolean
@@ -93,7 +95,6 @@
 		const gchar *name,
 		gpointer user_data)
 {
-	cmdline *cmd = user_data;
 	manager = g_dbus_object_manager_server_new(dbus_object_path);
 	gchar *s;
 	s = g_strdup_printf("%s/%s",dbus_object_path,instance_name);
diff --git a/objects/hwmons_barreleye.c b/objects/hwmons_barreleye.c
index 06b1554..0057af4 100644
--- a/objects/hwmons_barreleye.c
+++ b/objects/hwmons_barreleye.c
@@ -1,5 +1,6 @@
 #include "interfaces/openbmc_intf.h"
 #include <stdio.h>
+#include <stdlib.h>
 #include <fcntl.h>
 #include "openbmc.h"
 #include "gpio.h"
@@ -70,7 +71,7 @@
 
 			}
 			guint32 value = atoi(buf)/scale;
-			GVariant* v = NEW_VARIANT_U(value);
+			NEW_VARIANT_U(value);
 			GVariant* old_value = sensor_value_get_value(sensor);
 			bool do_set = false;
 			if(old_value == NULL)
@@ -130,8 +131,6 @@
 {
 	ObjectSkeleton *object;
 
-	cmdline *cmd = user_data;
-
 	manager = g_dbus_object_manager_server_new(dbus_object_path);
 	int i = 0;
 	for(i=0;i<NUM_HWMONS;i++)
diff --git a/objects/led_controller.c b/objects/led_controller.c
index 1f542e1..96e7ad1 100644
--- a/objects/led_controller.c
+++ b/objects/led_controller.c
@@ -5,6 +5,11 @@
 #include <dirent.h>
 #include <systemd/sd-bus.h>
 
+static int led_stable_state_function(const char *, const char *);
+static int led_default_blink(const char *, const char *);
+static int read_led(const char *, const char *, void *, const size_t);
+static int led_custom_blink(const char *, sd_bus_message *);
+
 /*
  * These are control files that are present for each led under
  *'/sys/class/leds/<led_name>/' which are used to trigger action
@@ -156,8 +161,8 @@
  * Turn On or Turn Off the LED
  * --------------------------------------------------------------
  */
-int
-led_stable_state_function(char *led_name, char *led_function)
+static int
+led_stable_state_function(const char *led_name, const char *led_function)
 {
 	/* Generic error reporter. */
 	int rc = -1;
@@ -244,8 +249,8 @@
  * Default blink action on the LED.
  * ----------------------------------------------------
  */
-int
-led_default_blink(char *led_name, char *blink_type)
+static int
+led_default_blink(const char *led_name, const char *blink_type)
 {
 	/* Generic error reporter */
 	int rc = -1;
@@ -281,7 +286,7 @@
  * Blinks at user defined 'on' and 'off' intervals.
  * -------------------------------------------------
  */
-int
+static int
 led_custom_blink(const char *led_name, sd_bus_message *msg)
 {
 	/* Generic error reporter. */
@@ -342,7 +347,7 @@
  * size -or- entire contents of file whichever is smaller
  * ----------------------------------------------------------------
  */
-int
+static int
 read_led(const char *name, const char *ctrl_file,
 		void *value, const size_t len)
 {
diff --git a/objects/pcie_slot_present_obj.c b/objects/pcie_slot_present_obj.c
index a71ba2d..36104e2 100644
--- a/objects/pcie_slot_present_obj.c
+++ b/objects/pcie_slot_present_obj.c
@@ -87,7 +87,6 @@
 	GDBusProxy *proxy;
 	GError *error;
 	GVariant *parm;
-	GVariant *result;
 
 	error = NULL;
 	proxy = g_dbus_proxy_new_sync(connection,
@@ -103,7 +102,7 @@
 	error = NULL;
 	parm = g_variant_new("(s)",present);
 
-	result = g_dbus_proxy_call_sync(proxy,
+	g_dbus_proxy_call_sync(proxy,
 			"setPresent",
 			parm,
 			G_DBUS_CALL_FLAGS_NONE,
@@ -121,8 +120,6 @@
 	GDBusConnection *c;
 	GDBusProxy *sys_proxy;
 	GError *error;
-	GVariant *parm;
-	GVariant *result;
 
 	loop = g_main_loop_new(NULL, FALSE);
 
@@ -146,7 +143,6 @@
 	{
 		object_info obj_info;
 		uint8_t present;
-		char* chr_present;
 		do {
 			rc = get_object(sys_proxy,&slots[i],&obj_info);
 			if(rc) { break; }
diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index 72947f5..da69413 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -36,8 +36,6 @@
 	Control* control = object_get_control((Object*)user_data);
 
 	//send the heartbeat
-	const gchar* obj_path = g_dbus_object_get_object_path((GDBusObject*)user_data);
-
 	guint poll_int = control_get_poll_interval(control);
 	if(poll_int == 0)
 	{
@@ -119,7 +117,6 @@
 		gpointer user_data)
 {
 	Control* control = object_get_control((Object*)user_data);
-	const gchar* obj_path = g_dbus_object_get_object_path((GDBusObject*)user_data);
 	if(state > 1)
 	{
 		g_dbus_method_invocation_return_dbus_error(invocation,
