diff --git a/Control/cardreader_interface.c b/Control/cardreader_interface.c
index b3828db02221c6ce5e6306db2229ed99e9620e18..242b0c59c4e9d3a7a3214e3f2d8edb172d86120c 100644
--- a/Control/cardreader_interface.c
+++ b/Control/cardreader_interface.c
@@ -48,7 +48,7 @@ void MGMT_transmit_buffer_hex(unsigned char* data, unsigned char length);
 void cardreader_display_clear(void);
 void cardreader_display_move(uint8_t x, uint8_t y);
 void cardreader_display_write_sz(char* string);
-void cardreader_display_write_sz_P(char* string);
+void cardreader_display_write_sz_P(const char* string);
 void cardreader_display_show_result(uint8_t success);
 void cardreader_display_set_backlight(uint8_t on);
 uint8_t cardreader_sys_get_card_status(void);
@@ -355,7 +355,7 @@ uint8_t cardreader_init_card_key(KEY key){
 	transport_send_message((uint8_t*)&msg, 1+sizeof(ISO7816_APDU_Header)+ sizeof(KEY));
 	
 	uint8_t card_status[4];
-	uint16_t length = transport_receive_message(&card_status, 4, 10000);
+	uint16_t length = transport_receive_message((uint8_t*)&card_status, 4, 10000);
 	if (TRANSPORT_IS_ERROR(length)){
 		printf_P(PSTR("Transport Error %04x\n"), length);
 		return 0;
@@ -370,7 +370,7 @@ uint8_t cardreader_clear_card_key(void){
 	transport_send_message((uint8_t*)&msg, 1+sizeof(ISO7816_APDU_Header));
 	
 	uint8_t card_status[4];
-	uint16_t length = transport_receive_message(&card_status, 4, 10000);
+	uint16_t length = transport_receive_message((uint8_t*)&card_status, 4, 10000);
 	if (TRANSPORT_IS_ERROR(length)){
 		printf_P(PSTR("Transport Error %04x\n"), length);
 		return 0;
@@ -427,7 +427,7 @@ void cardreader_display_write_sz(char* string){
 	transport_receive_message(&success, 1, 3000);
 }
 
-void cardreader_display_write_sz_P(char* string){
+void cardreader_display_write_sz_P(const char* string){
 	cardreader_display_message_t msg = {CARDREADER_MSG_TYPE_DISPALY};
 	msg.command = CARDREADER_DISPLAY_MSG_WRITE;
 	uint16_t len = strlen_P(string);
diff --git a/Control/door.c b/Control/door.c
index e44f07f8571151ed04eeb744e00953ae15bd4102..a309e06e9af8cbaaf0b104e22a470f3e62cbad3b 100644
--- a/Control/door.c
+++ b/Control/door.c
@@ -5,20 +5,20 @@ uint8_t door_read_pin_status(void);
 uint8_t door_update_status(uint8_t sensor_status);
 uint8_t is_alarm_status(uint8_t door_status);
 
-char status_unlocked[]  PROGMEM = "Unlocked";
-char status_locked[]    PROGMEM = "Locked";
-char status_open[]      PROGMEM = "Open";
-char status_alarm_cut[] PROGMEM = "Alarm wire open";
-char status_alarm[]     PROGMEM = "Alarm";
-char status_unlocking[] PROGMEM = "Unlocking...";
-char status_locking[]   PROGMEM = "Locking...";
-char* status_names[] PROGMEM = {status_unlocked,
-                                status_locked,
-                                status_open,
-                                status_alarm_cut,
-                                status_alarm,
-                                status_unlocking,
-                                status_locking};
+const char status_unlocked[]  PROGMEM = "Unlocked";
+const char status_locked[]    PROGMEM = "Locked";
+const char status_open[]      PROGMEM = "Open";
+const char status_alarm_cut[] PROGMEM = "Alarm wire open";
+const char status_alarm[]     PROGMEM = "Alarm";
+const char status_unlocking[] PROGMEM = "Unlocking...";
+const char status_locking[]   PROGMEM = "Locking...";
+const char* const status_names[] PROGMEM = {status_unlocked,
+                                            status_locked,
+                                            status_open,
+                                            status_alarm_cut,
+                                            status_alarm,
+                                            status_unlocking,
+                                            status_locking};
 
 volatile uint8_t door_status;
 
@@ -149,7 +149,7 @@ void lock(void){
 	DOOR_PORT   = (DOOR_PORT   & (uint8_t)~COMMAND_UNLOCK_PIN)    | COMMAND_LOCK_PIN;
 }
 
-uint8_t toggle_lock_unlock( void (*msg_target)(char*) ){
+uint8_t toggle_lock_unlock( void (*msg_target)(const char*) ){
 	if ((door_status & DOOR_STATUS_UNLOCKED) == 0){
 		return unlock_checked(msg_target);
 	} else {
@@ -157,7 +157,7 @@ uint8_t toggle_lock_unlock( void (*msg_target)(char*) ){
 	}
 }
 
-uint8_t unlock_checked( void (*msg_target)(char*) ){
+uint8_t unlock_checked( void (*msg_target)(const char*) ){
 	if (door_status & DOOR_STATUS_UNLOCKED){
 		msg_target(PSTR("Already unlocked\n"));
 	} else if (door_status & DOOR_STATUS_LOCKING){
@@ -171,7 +171,7 @@ uint8_t unlock_checked( void (*msg_target)(char*) ){
 }
 
 
-uint8_t lock_checked( void (*msg_target)(char*) ){
+uint8_t lock_checked( void (*msg_target)(const char*) ){
 	if (is_alarm_status(door_status)){
 		msg_target(PSTR("Can't lock in alarm state\n"));
 	} else if (door_status & DOOR_STATUS_UNLOCKING) {
diff --git a/Control/door.h b/Control/door.h
index 21da68dd12bbfc3deb853518c8e820cecabd1177..df6aa8f862559bf6e0756578f807c4ca5a0693ae 100644
--- a/Control/door.h
+++ b/Control/door.h
@@ -43,7 +43,7 @@ uint8_t door_clear_alarm(void);
 
 void unlock(void);
 void lock(void);
-uint8_t toggle_lock_unlock( void (*msg_target)(char*) );
-uint8_t unlock_checked( void (*msg_target)(char*) );
-uint8_t lock_checked( void (*msg_target)(char*) );
+uint8_t toggle_lock_unlock( void (*msg_target)(const char*) );
+uint8_t unlock_checked( void (*msg_target)(const char*) );
+uint8_t lock_checked( void (*msg_target)(const char*) );
 void door_write_status(void);
\ No newline at end of file
diff --git a/Control/log.c b/Control/log.c
index e44668e13d0edfd13123d8fed590559689980a60..c2ce307ca0595b2253600904f1e760a05025c132 100644
--- a/Control/log.c
+++ b/Control/log.c
@@ -5,18 +5,18 @@
 #include "door.h"
 #include "power_monitor.h"
 
-char log_event_startup[]              PROGMEM = "== System Started ==";
-char log_event_alarm_raised[]         PROGMEM = "Alarm Raised";
-char log_event_alarm_changed[]        PROGMEM = "State change during Alarm";
-char log_event_alarm_login[]          PROGMEM = "Login during Alarm";
-char log_event_alarm_disabled[]       PROGMEM = "Alarm disabled";
-char log_event_ac_fail[]              PROGMEM = "AC Power Fail";
-char log_event_ac_return[]            PROGMEM = "AC Power Restored";
-char log_event_main_battery_low[]     PROGMEM = "Main Battery Low";
-char log_event_keymatic_battery_low[] PROGMEM = "Keymatic Battery Low";
-char log_event_door_command_timeout[] PROGMEM = "Door command Timeout";
+const char log_event_startup[]              PROGMEM = "== System Started ==";
+const char log_event_alarm_raised[]         PROGMEM = "Alarm Raised";
+const char log_event_alarm_changed[]        PROGMEM = "State change during Alarm";
+const char log_event_alarm_login[]          PROGMEM = "Login during Alarm";
+const char log_event_alarm_disabled[]       PROGMEM = "Alarm disabled";
+const char log_event_ac_fail[]              PROGMEM = "AC Power Fail";
+const char log_event_ac_return[]            PROGMEM = "AC Power Restored";
+const char log_event_main_battery_low[]     PROGMEM = "Main Battery Low";
+const char log_event_keymatic_battery_low[] PROGMEM = "Keymatic Battery Low";
+const char log_event_door_command_timeout[] PROGMEM = "Door command Timeout";
 
-char* event_names[] PROGMEM = {log_event_startup,
+const char* const event_names[] PROGMEM = {log_event_startup,
                                log_event_alarm_raised,
                                log_event_alarm_changed,
                                log_event_alarm_login,
diff --git a/Control/shell/shell.c b/Control/shell/shell.c
index 06231fff7df8c06a7d5780610b52c1e409735d0f..21fd009e08e47951f7836b6f2211f907771e6d69 100644
--- a/Control/shell/shell.c
+++ b/Control/shell/shell.c
@@ -165,6 +165,8 @@ logout        - Exit shell\n\
 quit          - Exit shell\n"));
 }
 
+extern void MGMT_transmit_buffer_hex(unsigned char* data, unsigned char length);
+
 void cmd_keyslot_init(readline_parsed_cmd_t* cmd){
 	uint8_t force = 0;
 	uint8_t usage_error = 0;
@@ -291,7 +293,7 @@ void cmd_keyslot_list(readline_parsed_cmd_t* cmd){
 	keystore_list();
 }
 
-void print_P(char* pstr){
+void print_P(const char* pstr){
 	printf_P(pstr);
 }