diff --git a/pySim-shell.py b/pySim-shell.py
index 946b3e5..e7bb7c0 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -58,8 +58,6 @@
 		self.card = card
 		self.rs = rs
 		self.py_locals = { 'card': self.card, 'rs' : self.rs }
-		self.card.read_aids()
-		self.poutput('AIDs on card: %s' % (self.card._aids))
 		self.numeric_path = False
 		self.add_settable(cmd2.Settable('numeric_path', bool, 'Print File IDs instead of names',
 						  onchange_cb=self._onchange_numeric_path))
@@ -254,13 +252,14 @@
 		sys.exit(2)
 
 	profile = CardProfileUICC()
+	profile.add_application(ADF_USIM())
+	profile.add_application(ADF_ISIM())
+
 	rs = RuntimeState(card, profile)
 
 	# FIXME: do this dynamically
 	rs.mf.add_file(DF_TELECOM())
 	rs.mf.add_file(DF_GSM())
-	rs.mf.add_application(ADF_USIM())
-	rs.mf.add_application(ADF_ISIM())
 
 	app = PysimApp(card, rs)
 	rs.select('MF', app)
diff --git a/pySim/cards.py b/pySim/cards.py
index c640591..857d0b6 100644
--- a/pySim/cards.py
+++ b/pySim/cards.py
@@ -207,6 +207,7 @@
 
 	# Fetch all the AIDs present on UICC
 	def read_aids(self):
+		self._aids = []
 		try:
 			# Find out how many records the EF.DIR has
 			# and store all the AIDs in the UICC
@@ -218,6 +219,8 @@
 					self._aids.append(rec[0][8:8 + int(rec[0][6:8], 16) * 2])
 		except Exception as e:
 			print("Can't read AIDs from SIM -- %s" % (str(e),))
+			self._aids = []
+		return self._aids
 
 	# Select ADF.U/ISIM in the Card using its full AID
 	def select_adf_by_aid(self, adf="usim"):
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index 0494df7..a1bb127 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -550,11 +550,33 @@
         self.selected_file = self.mf
         self.profile = profile
         # add applications + MF-files from profile
-        for a in self.profile.applications:
+        apps = self._match_applications()
+        for a in apps:
             self.mf.add_application(a)
         for f in self.profile.files_in_mf:
             self.mf.add_file(f)
 
+    def _match_applications(self):
+        """match the applications from the profile with applications on the card"""
+        apps_profile = self.profile.applications
+        aids_card = self.card.read_aids()
+        apps_taken = []
+        if aids_card:
+            aids_taken = []
+            print("AIDs on card:")
+            for a in aids_card:
+                for f in apps_profile:
+                    if f.aid in a:
+                        print(" %s: %s" % (f.name, a))
+                        aids_taken.append(a)
+                        apps_taken.append(f)
+            aids_unknown = set(aids_card) - set(aids_taken)
+            for a in aids_unknown:
+                print(" unknown: %s" % a)
+        else:
+            print("error: could not determine card applications")
+        return apps_taken
+
     def get_cwd(self):
         """Obtain the current working directory."""
         if isinstance(self.selected_file, CardDF):
