diff --git a/pySim-read.py b/pySim-read.py
index 7906685..638bd4b 100755
--- a/pySim-read.py
+++ b/pySim-read.py
@@ -251,7 +251,8 @@
 
 	# Check whether we have th AID of USIM, if so select it by its AID
 	# EF.UST - File Id in ADF USIM : 6f38
-	if '9000' == card.select_adf_by_aid():
+	data, sw = card.select_adf_by_aid(adf="usim")
+	if sw == '9000':
 		# Select USIM profile
 		usim_card = UsimCard(scc)
 
@@ -300,7 +301,8 @@
 			print("ePDGSelection: Can't read file -- " + str(e))
 
 	# Select ISIM application by its AID
-	if '9000' == card.select_adf_by_aid(adf="isim"):
+	data, sw = card.select_adf_by_aid(adf="isim")
+	if sw == '9000':
 		# Select USIM profile
 		isim_card = IsimCard(scc)
 
@@ -352,7 +354,8 @@
 
 	# Check whether we have th AID of ISIM, if so select it by its AID
 	# EF.IST - File Id in ADF ISIM : 6f07
-	if '9000' == card.select_adf_by_aid(adf="isim"):
+	data, sw = card.select_adf_by_aid(adf="isim")
+	if sw == '9000':
 		# EF.IST
 		(res, sw) = card.read_binary('6f07')
 		if sw == '9000':
diff --git a/pySim/cards.py b/pySim/cards.py
index 857d0b6..5eb2884 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -224,21 +224,21 @@
 
 	# Select ADF.U/ISIM in the Card using its full AID
 	def select_adf_by_aid(self, adf="usim"):
-		# Check for valid ADF name
-		if adf not in ["usim", "isim"]:
-			return None
-
-		# First (known) halves of the U/ISIM AID
-		aid_map = {}
-		aid_map["usim"] = "a0000000871002"
-		aid_map["isim"] = "a0000000871004"
-
-		for aid in self._aids:
-			if aid_map[adf] in aid:
-				(res, sw) = self._scc.select_adf(aid)
-				return sw
-
-		return None
+		# Find full AID by partial AID:
+		if is_hex(adf):
+			for aid in self._aids:
+				if len(aid) >= len(adf) and adf == aid[0:len(adf)]:
+					return self._scc.select_adf(aid)
+		# Find full AID by application name:
+		elif adf in ["usim", "isim"]:
+			# First (known) halves of the U/ISIM AID
+			aid_map = {}
+			aid_map["usim"] = "a0000000871002"
+			aid_map["isim"] = "a0000000871004"
+			for aid in self._aids:
+				if aid_map[adf] in aid:
+					return self._scc.select_adf(aid)
+		return (None, None)
 
 	# Erase the contents of a file
 	def erase_binary(self, ef):
@@ -1335,7 +1335,8 @@
 			self._scc.update_binary('6f20', p['opc'], 17)
 
 		# update EF-USIM_AUTH_KEY in ADF.ISIM
-		if '9000' == self.select_adf_by_aid(adf="isim"):
+		data, sw = self.select_adf_by_aid(adf="isim")
+		if sw == '9000':
 			if p.get('ki'):
 				self._scc.update_binary('af20', p['ki'], 1)
 			if p.get('opc'):
@@ -1382,7 +1383,8 @@
 				if sw != '9000':
 					print("Programming IMPU failed with code %s"%sw)
 
-		if '9000' == self.select_adf_by_aid():
+		data, sw = self.select_adf_by_aid(adf="usim")
+		if sw == '9000':
 			# update EF-USIM_AUTH_KEY in ADF.USIM
 			if p.get('ki'):
 				self._scc.update_binary('af20', p['ki'], 1)
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index 9f3b221..cd08699 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -665,7 +665,7 @@
             f = sels[name]
             try:
                 if isinstance(f, CardADF):
-                    (data, sw) = self.card._scc.select_adf(f.aid)
+                    (data, sw) = self.card.select_adf_by_aid(f.aid)
                 else:
                     (data, sw) = self.card._scc.select_file(f.fid)
                 self.selected_file = f
