diff --git a/PKGBUILD b/PKGBUILD
index 16e22e4..cc91b20 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -16,7 +16,7 @@ url="http://essej.net/sooperlooper/"
 license=('GPL2')
 depends=('gcc-libs' 'glibc' 'libsigc++' 'wxgtk3')
 makedepends=('alsa-lib' 'autoconf-archive' 'gendesk' 'git' 'imagemagick'
-'jack' 'liblo' 'libsamplerate' 'libsndfile' 'libxml2' 'ncurses' 'rubberband')
+  'jack' 'liblo' 'libsamplerate' 'libsndfile' 'libxml2' 'ncurses' 'rubberband')
 provides=('sooperlooper')
 conflicts=('sooperlooper')
 source=("git+https://github.com/essej/sooperlooper.git")
@@ -29,6 +29,7 @@ pkgver() {
 
 prepare() {
   cd "${srcdir}/${_pkgname}"
+  git apply ../../fix_build_error.arch.patch
   ./autogen.sh
   convert doc/html/sl_web_logo_black.png \
     -resize 128x128\> \
@@ -36,13 +37,13 @@ prepare() {
     -gravity center \
     -composite net.essej.sooperlooper.png
   gendesk -n \
-          --pkgname "net.essej.sooperlooper" \
-          --name "SooperLooper" \
-          --pkgdesc "Live Looping Sampler" \
-          --exec "slgui" \
-          --icon "net.essej.sooperlooper" \
-          --genericname "Live Looping Sampler" \
-          --categories "AudioVideo;Audio;"
+    --pkgname "net.essej.sooperlooper" \
+    --name "SooperLooper" \
+    --pkgdesc "Live Looping Sampler" \
+    --exec "slgui" \
+    --icon "net.essej.sooperlooper" \
+    --genericname "Live Looping Sampler" \
+    --categories "AudioVideo;Audio;"
 }
 
 build() {
@@ -53,7 +54,7 @@ build() {
 
 package() {
   depends+=('libasound.so' 'libjack.so' 'liblo.so' 'libncursesw.so'
-  'librubberband.so' 'libsamplerate.so' 'libsndfile.so')
+    'librubberband.so' 'libsamplerate.so' 'libsndfile.so')
   cd "${srcdir}/${_pkgname}"
   make DESTDIR="${pkgdir}" install
   install -vDm 644 *.desktop -t "${pkgdir}/usr/share/applications/"
diff --git a/fix_build_error.arch.patch b/fix_build_error.arch.patch
new file mode 100644
index 0000000..42b0e6b
--- /dev/null
+++ b/fix_build_error.arch.patch
@@ -0,0 +1,241 @@
+diff --git a/src/control_osc.cpp b/src/control_osc.cpp
+index 3fd4d6d..04637d4 100644
+--- a/src/control_osc.cpp
++++ b/src/control_osc.cpp
+@@ -145,88 +145,88 @@ ControlOSC::register_callbacks()
+ 
+ 
+ 		/* add method that will match the path /quit with no args */
+-		lo_server_add_method(serv, "/quit", "", ControlOSC::_quit_handler, this);
++		lo_server_add_method(serv, "/quit", "", (lo_method_handler) ControlOSC::_quit_handler, this);
+ 
+ 		// add ping handler:  s:returl s:retpath [useid]
+-		lo_server_add_method(serv, "/ping", "ss", ControlOSC::_ping_handler, this);
+-		lo_server_add_method(serv, "/ping", "ssi", ControlOSC::_ping_handler, this);
++		lo_server_add_method(serv, "/ping", "ss", (lo_method_handler) ControlOSC::_ping_handler, this);
++		lo_server_add_method(serv, "/ping", "ssi", (lo_method_handler) ControlOSC::_ping_handler, this);
+ 
+ 		// add loop add handler:  i:channels  i:bytes_per_channel
+-		lo_server_add_method(serv, "/loop_add", "if", ControlOSC::_loop_add_handler, this);
+-		lo_server_add_method(serv, "/loop_add", "ifi", ControlOSC::_loop_add_handler, this);
++		lo_server_add_method(serv, "/loop_add", "if", (lo_method_handler) ControlOSC::_loop_add_handler, this);
++		lo_server_add_method(serv, "/loop_add", "ifi", (lo_method_handler) ControlOSC::_loop_add_handler, this);
+ 
+ 		// load session:  s:filename  s:returl  s:retpath
+-		lo_server_add_method(serv, "/load_session", "sss", ControlOSC::_load_session_handler, this);
++		lo_server_add_method(serv, "/load_session", "sss", (lo_method_handler) ControlOSC::_load_session_handler, this);
+ 
+ 		// save session:  s:filename  s:returl  s:retpath (i:write_audio)
+-		lo_server_add_method(serv, "/save_session", "sss", ControlOSC::_save_session_handler, this);
+-		lo_server_add_method(serv, "/save_session", "sssi", ControlOSC::_save_session_handler, this);
++		lo_server_add_method(serv, "/save_session", "sss", (lo_method_handler) ControlOSC::_save_session_handler, this);
++		lo_server_add_method(serv, "/save_session", "sssi", (lo_method_handler) ControlOSC::_save_session_handler, this);
+ 		
+ 		// add loop del handler:  i:index 
+-		lo_server_add_method(serv, "/loop_del", "i", ControlOSC::_loop_del_handler, this);
++		lo_server_add_method(serv, "/loop_del", "i", (lo_method_handler) ControlOSC::_loop_del_handler, this);
+ 
+ 		// un/register config handler:  s:returl  s:retpath
+-		lo_server_add_method(serv, "/register", "ss", ControlOSC::_register_config_handler, this);
+-		lo_server_add_method(serv, "/unregister", "ss", ControlOSC::_unregister_config_handler, this);
++		lo_server_add_method(serv, "/register", "ss", (lo_method_handler) ControlOSC::_register_config_handler, this);
++		lo_server_add_method(serv, "/unregister", "ss", (lo_method_handler) ControlOSC::_unregister_config_handler, this);
+ 
+-		lo_server_add_method(serv, "/set", "sf", ControlOSC::_global_set_handler, this);
+-		lo_server_add_method(serv, "/get", "sss", ControlOSC::_global_get_handler, this);
++		lo_server_add_method(serv, "/set", "sf", (lo_method_handler) ControlOSC::_global_set_handler, this);
++		lo_server_add_method(serv, "/get", "sss", (lo_method_handler) ControlOSC::_global_get_handler, this);
+ 
+ 		// un/register_update args= s:ctrl s:returl s:retpath
+-		lo_server_add_method(serv, "/register_update", "sss", ControlOSC::_global_register_update_handler, this);
+-		lo_server_add_method(serv, "/unregister_update", "sss", ControlOSC::_global_unregister_update_handler, this);
+-		lo_server_add_method(serv, "/register_auto_update", "siss", ControlOSC::_global_register_auto_update_handler, this);
+-		lo_server_add_method(serv, "/unregister_auto_update", "sss", ControlOSC::_global_unregister_auto_update_handler, this);
++		lo_server_add_method(serv, "/register_update", "sss", (lo_method_handler) ControlOSC::_global_register_update_handler, this);
++		lo_server_add_method(serv, "/unregister_update", "sss", (lo_method_handler) ControlOSC::_global_unregister_update_handler, this);
++		lo_server_add_method(serv, "/register_auto_update", "siss", (lo_method_handler) ControlOSC::_global_register_auto_update_handler, this);
++		lo_server_add_method(serv, "/unregister_auto_update", "sss", (lo_method_handler) ControlOSC::_global_unregister_auto_update_handler, this);
+ 
+ 
+ 		// certain RT global ctrls
+-		lo_server_add_method(serv, "/sl/-2/set", "sf", ControlOSC::_set_handler, new CommandInfo(this, -2, Event::type_global_control_change));
++		lo_server_add_method(serv, "/sl/-2/set", "sf", (lo_method_handler) ControlOSC::_set_handler, new CommandInfo(this, -2, Event::type_global_control_change));
+ 
+ 		// get all midi bindings:  s:returl s:retpath
+-		lo_server_add_method(serv, "/get_all_midi_bindings", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/get_all_midi_bindings", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::GetAllBinding));
+ 
+ 		// remove a specific midi binding:  s:binding_serialization s:options
+-		lo_server_add_method(serv, "/remove_midi_binding", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/remove_midi_binding", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::RemoveBinding));
+ 
+ 		// add a specific midi binding:  s:binding_serialization s:options
+-		lo_server_add_method(serv, "/add_midi_binding", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/add_midi_binding", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::AddBinding));
+ 
+ 		// clear all bindings
+-		lo_server_add_method(serv, "/clear_midi_bindings", "", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/clear_midi_bindings", "", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::ClearAllBindings));
+ 		
+ 		// load bindings from file:  s:binding_filename s:options
+-		lo_server_add_method(serv, "/load_midi_bindings", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/load_midi_bindings", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::LoadBindings));
+ 
+ 		// save bindings to file:  s:binding_filename s:options
+-		lo_server_add_method(serv, "/save_midi_bindings", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/save_midi_bindings", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::SaveBindings));
+ 
+ 		// learn midi binding:  s:binding_serialization s:options  s:returl s:retpath
+-		lo_server_add_method(serv, "/learn_midi_binding", "ssss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/learn_midi_binding", "ssss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::LearnBinding));
+ 
+ 		// return next midi event in a binding serialization:  s:returl  s:retpath
+-		lo_server_add_method(serv, "/get_next_midi_event", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/get_next_midi_event", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::GetNextMidi));
+ 
+ 		// cancel learn or get next midi event in a binding serialization:  s:returl  s:retpath
+-		lo_server_add_method(serv, "/cancel_midi_learn", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/cancel_midi_learn", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::CancelLearn));
+ 
+ 		// cancel learn or get next midi event in a binding serialization:  s:returl  s:retpath
+-		lo_server_add_method(serv, "/cancel_get_next_midi", "ss", ControlOSC::_midi_binding_handler,
++		lo_server_add_method(serv, "/cancel_get_next_midi", "ss", (lo_method_handler) ControlOSC::_midi_binding_handler,
+ 				     new MidiBindCommand(this, MidiBindCommand::CancelGetNext));
+ 		
+ 		
+ 		// MIDI clock
+-		lo_server_add_method(serv, "/sl/midi_start", NULL, ControlOSC::_midi_start_handler, this);
+-		lo_server_add_method(serv, "/sl/midi_stop", NULL, ControlOSC::_midi_stop_handler, this);
+-		lo_server_add_method(serv, "/sl/midi_tick", NULL, ControlOSC::_midi_tick_handler, this);
++		lo_server_add_method(serv, "/sl/midi_start", NULL, (lo_method_handler) ControlOSC::_midi_start_handler, this);
++		lo_server_add_method(serv, "/sl/midi_stop", NULL, (lo_method_handler) ControlOSC::_midi_stop_handler, this);
++		lo_server_add_method(serv, "/sl/midi_tick", NULL, (lo_method_handler) ControlOSC::_midi_tick_handler, this);
+ 	
+ 	}
+ }
+@@ -310,52 +310,52 @@ ControlOSC::on_loop_added (int instance, bool sendupdate)
+ 		serv = srvs[i];
+ 		
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/down", instance);
+-		lo_server_add_method(serv, tmpstr, "s", ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_down));
++		lo_server_add_method(serv, tmpstr, "s", (lo_method_handler) ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_down));
+ 	
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/up", instance);
+-		lo_server_add_method(serv, tmpstr, "s", ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_up));
++		lo_server_add_method(serv, tmpstr, "s", (lo_method_handler) ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_up));
+ 
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/hit", instance);
+-		lo_server_add_method(serv, tmpstr, "s", ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_hit));
++		lo_server_add_method(serv, tmpstr, "s", (lo_method_handler) ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_hit));
+ 		
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/upforce", instance);
+-		lo_server_add_method(serv, tmpstr, "s", ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_upforce));
++		lo_server_add_method(serv, tmpstr, "s", (lo_method_handler) ControlOSC::_updown_handler, new CommandInfo(this, instance, Event::type_cmd_upforce));
+ 		
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/set", instance);
+-		lo_server_add_method(serv, tmpstr, "sf", ControlOSC::_set_handler, new CommandInfo(this, instance, Event::type_control_change));
++		lo_server_add_method(serv, tmpstr, "sf", (lo_method_handler) ControlOSC::_set_handler, new CommandInfo(this, instance, Event::type_control_change));
+ 	
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/get", instance);
+-		lo_server_add_method(serv, tmpstr, "sss", ControlOSC::_get_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sss", (lo_method_handler) ControlOSC::_get_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/set_prop", instance);
+-		lo_server_add_method(serv, tmpstr, "ss", ControlOSC::_set_prop_handler, new CommandInfo(this, instance, Event::type_control_change));
++		lo_server_add_method(serv, tmpstr, "ss", (lo_method_handler) ControlOSC::_set_prop_handler, new CommandInfo(this, instance, Event::type_control_change));
+ 
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/get_prop", instance);
+-		lo_server_add_method(serv, tmpstr, "sss", ControlOSC::_get_prop_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sss", (lo_method_handler) ControlOSC::_get_prop_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 		// load loop:  s:filename  s:returl  s:retpath
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/load_loop", instance);
+-		lo_server_add_method(serv, tmpstr, "sss", ControlOSC::_loadloop_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sss", (lo_method_handler) ControlOSC::_loadloop_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 		// save loop:  s:filename  s:format s:endian s:returl  s:retpath
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/save_loop", instance);
+-		lo_server_add_method(serv, tmpstr, "sssss", ControlOSC::_saveloop_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sssss", (lo_method_handler) ControlOSC::_saveloop_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 	
+ 		// register_update args= s:ctrl s:returl s:retpath
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/register_update", instance);
+-		lo_server_add_method(serv, tmpstr, "sss", ControlOSC::_register_update_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sss", (lo_method_handler) ControlOSC::_register_update_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 		// unregister_update args= s:ctrl s:returl s:retpath
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/unregister_update", instance);
+-		lo_server_add_method(serv, tmpstr, "sss", ControlOSC::_unregister_update_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sss", (lo_method_handler) ControlOSC::_unregister_update_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 		// register_audo_update args= s:ctrl i:millisec s:returl s:retpath
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/register_auto_update", instance);
+-		lo_server_add_method(serv, tmpstr, "siss", ControlOSC::_register_auto_update_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "siss", (lo_method_handler) ControlOSC::_register_auto_update_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 		// unregister_auto_update args= s:ctrl s:returl s:retpath
+ 		snprintf(tmpstr, sizeof(tmpstr), "/sl/%d/unregister_auto_update", instance);
+-		lo_server_add_method(serv, tmpstr, "sss", ControlOSC::_unregister_auto_update_handler, new CommandInfo(this, instance, Event::type_control_request));
++		lo_server_add_method(serv, tmpstr, "sss", (lo_method_handler) ControlOSC::_unregister_auto_update_handler, new CommandInfo(this, instance, Event::type_control_request));
+ 
+ 	}
+ 
+diff --git a/src/gui/loop_control.cpp b/src/gui/loop_control.cpp
+index 858046c..5508289 100644
+--- a/src/gui/loop_control.cpp
++++ b/src/gui/loop_control.cpp
+@@ -193,20 +193,20 @@ LoopControl::LoopControl (const wxString & rcdir)
+ 	cerr << "slgui: our URL is " << _our_url << endl;
+ 	
+ 	/* add handler for control param callbacks, first is loop index , 2nd arg ctrl string, 3nd arg value */
+-	lo_server_add_method(_osc_server, "/ctrl", "isf", LoopControl::_control_handler, this);
+-	lo_server_add_method(_osc_server, "/prop", "iss", LoopControl::_property_handler, this);
++	lo_server_add_method(_osc_server, "/ctrl", "isf", (lo_method_handler) LoopControl::_control_handler, this);
++	lo_server_add_method(_osc_server, "/prop", "iss", (lo_method_handler) LoopControl::_property_handler, this);
+ 
+ 	// pingack expects: s:engine_url s:version i:loopcount
+-	lo_server_add_method(_osc_server, "/pingack", "ssi", LoopControl::_pingack_handler, this);
+-	lo_server_add_method(_osc_server, "/pingack", "ssii", LoopControl::_pingack_handler, this);
++	lo_server_add_method(_osc_server, "/pingack", "ssi", (lo_method_handler) LoopControl::_pingack_handler, this);
++	lo_server_add_method(_osc_server, "/pingack", "ssii", (lo_method_handler) LoopControl::_pingack_handler, this);
+ 
+-	lo_server_add_method(_osc_server, "/alive_resp", "ssi", LoopControl::_alive_handler, this);
+-	lo_server_add_method(_osc_server, "/alive_resp", "ssii", LoopControl::_alive_handler, this);
++	lo_server_add_method(_osc_server, "/alive_resp", "ssi", (lo_method_handler) LoopControl::_alive_handler, this);
++	lo_server_add_method(_osc_server, "/alive_resp", "ssii", (lo_method_handler) LoopControl::_alive_handler, this);
+ 
+-	lo_server_add_method(_osc_server, "/error", "ss", LoopControl::_error_handler, this);
++	lo_server_add_method(_osc_server, "/error", "ss", (lo_method_handler) LoopControl::_error_handler, this);
+ 	
+ 	/* add handler for recving midi bindings, s:status s:serialized binding */
+-	lo_server_add_method(_osc_server, "/recv_midi_bindings", "ss", LoopControl::_midi_binding_handler, this);
++	lo_server_add_method(_osc_server, "/recv_midi_bindings", "ss", (lo_method_handler) LoopControl::_midi_binding_handler, this);
+ 	
+ 	_pingack = false;
+ 	_waiting = 0;
+diff --git a/src/slconsole.cpp b/src/slconsole.cpp
+index 3c6a1db..8197f5d 100644
+--- a/src/slconsole.cpp
++++ b/src/slconsole.cpp
+@@ -418,10 +418,10 @@ int main(int argc, char *argv[])
+     our_url = lo_server_get_url (osc_server);
+     
+     /* add handler for control param callbacks, first arg ctrl string, 2nd arg value */
+-    lo_server_add_method(osc_server, "/ctrl", "isf", ctrl_handler, NULL);
++    lo_server_add_method(osc_server, "/ctrl", "isf", (lo_method_handler) ctrl_handler, NULL);
+ 
+     // pingack expects: s:engine_url s:version i:loopcount
+-    lo_server_add_method(osc_server, "/pingack", "ssi", pingack_handler, NULL);
++    lo_server_add_method(osc_server, "/pingack", "ssi", (lo_method_handler) pingack_handler, NULL);
+     
+     // start up our thread
+     pthread_create (&osc_thread, NULL, osc_receiver, NULL);