diff --git a/pySim/transport/serial.py b/pySim/transport/serial.py
index c61b4b5..d384146 100644
--- a/pySim/transport/serial.py
+++ b/pySim/transport/serial.py
@@ -27,10 +27,11 @@
 import time
 
 from pySim.exceptions import NoCardError, ProtocolError
+from pySim.transport import LinkBase
 from pySim.utils import h2b, b2h
 
 
-class SerialSimLink(object):
+class SerialSimLink(LinkBase):
 
 	def __init__(self, device='/dev/ttyUSB0', baudrate=9600, rst='-rts', debug=False):
 		self._sl = serial.Serial(
@@ -125,13 +126,7 @@
 		return self._sl.read()
 
 	def send_apdu_raw(self, pdu):
-		"""send_apdu_raw(pdu): Sends an APDU with minimal processing
-
-		   pdu    : string of hexadecimal characters (ex. "A0A40000023F00")
-		   return : tuple(data, sw), where
-		            data : string (in hex) of returned data (ex. "074F4EFFFF")
-		            sw   : string (in hex) of status word (ex. "9000")
-		"""
+		"""see LinkBase.send_apdu_raw"""
 
 		pdu = h2b(pdu)
 		data_len = ord(pdu[4])	# P3
@@ -182,33 +177,3 @@
 
 		# Return value
 		return b2h(data), b2h(sw)
-
-	def send_apdu(self, pdu):
-		"""send_apdu(pdu): Sends an APDU and auto fetch response data
-
-		   pdu    : string of hexadecimal characters (ex. "A0A40000023F00")
-		   return : tuple(data, sw), where
-		            data : string (in hex) of returned data (ex. "074F4EFFFF")
-		            sw   : string (in hex) of status word (ex. "9000")
-		"""
-		data, sw = self.send_apdu_raw(pdu)
-
-		if (sw is not None) and (sw[0:2] == '9f'):
-			pdu_gr = pdu[0:2] + 'c00000' + sw[2:4]
-			data, sw = self.send_apdu_raw(pdu_gr)
-
-		return data, sw
-
-	def send_apdu_checksw(self, pdu, sw="9000"):
-		"""send_apdu_checksw(pdu,sw): Sends an APDU and check returned SW
-
-		   pdu    : string of hexadecimal characters (ex. "A0A40000023F00")
-		   sw     : string of 4 hexadecimal characters (ex. "9000")
-		   return : tuple(data, sw), where
-		            data : string (in hex) of returned data (ex. "074F4EFFFF")
-		            sw   : string (in hex) of status word (ex. "9000")
-		"""
-		rv = self.send_apdu(pdu)
-		if sw.lower() != rv[1]:
-			raise RuntimeError("SW match failed ! Expected %s and got %s." % (sw.lower(), rv[1]))
-		return rv
