diff --git a/lib/apex/encoder.rb b/lib/apex/encoder.rb
new file mode 100644
index 0000000000000000000000000000000000000000..089aa0909be7468c4214de23dad9a487d3905913
--- /dev/null
+++ b/lib/apex/encoder.rb
@@ -0,0 +1,2 @@
+require 'apex/encoder/aprs_kiss'
+require 'apex/encoder/igate_tcp'
diff --git a/lib/apex/aprs_kiss.rb b/lib/apex/encoder/aprs_kiss.rb
similarity index 100%
rename from lib/apex/aprs_kiss.rb
rename to lib/apex/encoder/aprs_kiss.rb
diff --git a/lib/apex/igate_tcp.rb b/lib/apex/encoder/igate_tcp.rb
similarity index 100%
rename from lib/apex/igate_tcp.rb
rename to lib/apex/encoder/igate_tcp.rb
diff --git a/spec/apex/aprs_kiss_spec.rb b/spec/apex/encoder/aprs_kiss_spec.rb
similarity index 95%
rename from spec/apex/aprs_kiss_spec.rb
rename to spec/apex/encoder/aprs_kiss_spec.rb
index 36bfc65eba7056aa9477163c1cabbb762a6d3214..d5cc94d1075c2aed4609c9ee63a13b29b5ccb023 100644
--- a/spec/apex/aprs_kiss_spec.rb
+++ b/spec/apex/encoder/aprs_kiss_spec.rb
@@ -1,5 +1,5 @@
-require_relative '../../lib/apex/aprs_kiss'
-require_relative '../../lib/apex/frame'
+require_relative '../../../lib/apex/encoder/aprs_kiss'
+require_relative '../../../lib/apex/frame'
 
 DECODED_FRAME_KISS = Apex::Frame::Frame.new(
     Apex::Frame::Entity.from_raw('W2GMD-1'),
diff --git a/spec/apex/igate_tcp_spec.rb b/spec/apex/encoder/igate_tcp_spec.rb
similarity index 92%
rename from spec/apex/igate_tcp_spec.rb
rename to spec/apex/encoder/igate_tcp_spec.rb
index c95d87a60dd44cbe9961ab5ef127a91f2de49834..5242dac68cb671c1d08aa98388c4fee7bb775a6b 100644
--- a/spec/apex/igate_tcp_spec.rb
+++ b/spec/apex/encoder/igate_tcp_spec.rb
@@ -1,6 +1,6 @@
-require_relative '../../lib/apex/igate_tcp'
-require_relative '../../lib/apex/frame'
-require_relative '../../lib/apex/app_info'
+require_relative '../../../lib/apex/encoder/igate_tcp'
+require_relative '../../../lib/apex/frame'
+require_relative '../../../lib/apex/app_info'
 
 DECODED_FRAME_IGATE = Apex::Frame::Frame.new(
     Apex::Frame::Entity.from_raw('W2GMD-1'),