diff --git a/library/IPA_Emulation.ttcn b/library/IPA_Emulation.ttcn
index 31f5c27..4d21bb4 100644
--- a/library/IPA_Emulation.ttcn
+++ b/library/IPA_Emulation.ttcn
@@ -12,11 +12,22 @@
 }
 */
 
+type record ASP_IPA_Unitdata {
+	IpaStreamId	streamId,
+	octetstring	payload
+}
+
+type port IPA_SP_PT message {
+	inout ASP_IPA_Unitdata;
+} with { extension "internal" }
+
 type component IPA_Emulation_CT {
 	/* down-facing port to IPA codec port */
 	port IPA_CODEC_PT IPA_PORT;
 	/* up-facing port to SCCP */
 	port MTP3asp_SP_PT MTP3_SP_PORT;
+	/* up-facing port for other streams */
+	port IPA_SP_PT IPA_SP_PORT;
 
 	var boolean g_initialized := false;
 	var ConnectionId g_ipa_conn_id := -1;
@@ -114,9 +125,26 @@
 	}
 }
 
+private function f_to_asp(IPA_RecvFrom ipa_rx) return ASP_IPA_Unitdata {
+	var ASP_IPA_Unitdata ret := {
+		streamId := ipa_rx.streamId,
+		payload := ipa_rx.msg
+	}
+	return ret;
+}
+
+private function f_from_asp(ConnectionId connId, ASP_IPA_Unitdata ipa_tx) return IPA_Send {
+	var IPA_Send ret := {
+		connId := connId,
+		streamId := ipa_tx.streamId,
+		msg := ipa_tx.payload
+	}
+	return ret;
+}
 
 function ScanEvents() runs on IPA_Emulation_CT {
 	var IPA_RecvFrom ipa_rx;
+	var ASP_IPA_Unitdata ipa_ud;
 	var ASP_MTP3_TRANSFERreq mtp_req;
 
 	f_connect("127.0.0.1", 5000, "127.0.0.1", 49999);
@@ -137,7 +165,7 @@
 				MTP3_SP_PORT.send(mtp);
 				}
 			case else {
-				log("Unknown/unsupported IPA Stream ID", ipa_rx);
+				IPA_SP_PORT.send(f_to_asp(ipa_rx));
 				}
 			}
 		}
@@ -151,6 +179,13 @@
 			}
 			IPA_PORT.send(ipa_tx);
 		}
+
+		/* Received MISC (RSL/OML/CTRL/MGCP) -> down into IPA */
+		[] IPA_SP_PORT.receive(ASP_IPA_Unitdata: ?) -> value ipa_ud {
+			IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud));
+		}
+
+
 		}
 	}
 }
