diff --git a/COMMON/ProtocolModules_Common.tpd b/COMMON/ProtocolModules_Common.tpd
new file mode 100644
index 0000000..f861d7b
--- /dev/null
+++ b/COMMON/ProtocolModules_Common.tpd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016 Ericsson
+
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+
+
+   File:               ProtocolModules_Common.tpd
+   Description:        tpd project file
+   Rev:                R9A
+   Prodnr:             CNL 113 368
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>ProtocolModules_Common</ProjectName>
+  <Files>
+    <FileResource projectRelativePath="General_Types.ttcn" relativeURI="src/General_Types.ttcn"/>
+    <FileResource projectRelativePath="MobileDomainDefinitions.asn" relativeURI="src/MobileDomainDefinitions.asn"/>
+    <FileResource projectRelativePath="UsefulTtcn3Types.ttcn" relativeURI="src/UsefulTtcn3Types.ttcn"/>
+    <FileResource projectRelativePath="XSD.ttcn" relativeURI="src/XSD.ttcn"/>
+    <FileResource projectRelativePath="general_typedefs.ttcn" relativeURI="src/general_typedefs.ttcn"/>
+    <FileResource projectRelativePath="http_www_w3_org_XML_1998_namespace.ttcn" relativeURI="src/http_www_w3_org_XML_1998_namespace.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/ProtocolModules_Common</targetExecutable>
+          <addSourceLineInfo>true</addSourceLineInfo>
+          <buildLevel>Level3-Creatingobjectfileswithdependencyupdate</buildLevel>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/COMMON/doc/documentation_note.txt b/COMMON/doc/documentation_note.txt
new file mode 100644
index 0000000..615d818
--- /dev/null
+++ b/COMMON/doc/documentation_note.txt
@@ -0,0 +1,13 @@
+Please note that the storage of the documentation of the product has been 
+moved to the eridoc.ericsson.se from the ClearCase.
+
+You can access the documentation of the product via the following links:
+
+The documentation belongs to the R9A revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113368&Rev=K&Lang=EN&PRev=Y
+
+The documentation belongs to the latest revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113368&Rev=HIGHEST&Lang=EN&Status=FREE&PRev=Y
+
diff --git a/COMMON/src/General_Types.ttcn b/COMMON/src/General_Types.ttcn
new file mode 100644
index 0000000..bd2dc54
--- /dev/null
+++ b/COMMON/src/General_Types.ttcn
@@ -0,0 +1,382 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Zoltan Jasz - initial implementation and initial documentation
+*   Abhishek Gupta
+*   Attila Balasko
+*   Endre Kulcsar
+*   Gabor Bettesch
+*   Gabor Szalai
+*   Janos Kovesdi
+*   Sandor Palugyai
+*   Tibor Csondes
+******************************************************************************/
+//
+//  File:               General_Types.ttcn
+//  Rev:                R9A
+//  Prodnr:             CNL 113 368
+//  Reference:
+
+module General_Types
+{
+
+group SimpleNativeTypes {
+
+  //****************************************************
+  // Bitstrings
+  //****************************************************
+
+  //bitstring with fixed length
+  type bitstring BIT1n length(1) with { variant "" };
+  type bitstring BIT2n length(2) with { variant "" };
+  type bitstring BIT3n length(3) with { variant "" };
+  type bitstring BIT4n length(4) with { variant "" };
+  type bitstring BIT5n length(5) with { variant "" };
+  type bitstring BIT6n length(6) with { variant "" };
+  type bitstring BIT7n length(7) with { variant "" };
+  type bitstring BIT8n length(8) with { variant "" };
+  type bitstring BIT9n length(9) with { variant "" };
+  type bitstring BIT12n length(12) with { variant "" };
+  type bitstring BIT14n length(14) with { variant "" };
+  type bitstring BIT15n length(15) with { variant "" };
+  type bitstring BIT16n length(16) with { variant "" };
+  type bitstring BIT56n length(56) with { variant "" };
+
+  //bitstring with length interval
+  type bitstring BIT14_24n length(14..24) with { variant "" };
+
+  //bitstring to be padded with fixed length
+  type bitstring BIT1np length(1) with { variant "" };
+  type bitstring BIT2np length(2) with { variant "" };
+  type bitstring BIT3np length(3) with { variant "" };
+  type bitstring BIT4np length(4) with { variant "" };
+  type bitstring BIT5np length(5) with { variant "" };
+  type bitstring BIT6np length(6) with { variant "" };
+  type bitstring BIT7np length(7) with { variant "" };
+  type bitstring BIT15np length(15) with { variant "" };
+
+  //bitstring with fixed length
+  type bitstring BIT1 length(1) with { variant "FIELDLENGTH(1)" };
+  type bitstring BIT2 length(2) with { variant "FIELDLENGTH(2)" };
+  type bitstring BIT3 length(3) with { variant "FIELDLENGTH(3)" };
+  type bitstring BIT4 length(4) with { variant "FIELDLENGTH(4)" };
+  type bitstring BIT5 length(5) with { variant "FIELDLENGTH(5)" };
+  type bitstring BIT6 length(6) with { variant "FIELDLENGTH(6)" };
+  type bitstring BIT7 length(7) with { variant "FIELDLENGTH(7)" };
+  type bitstring BIT8 length(8) with { variant "FIELDLENGTH(8)" };
+  type bitstring BIT9 length(9) with { variant "FIELDLENGTH(9)" };
+  type bitstring BIT10 length(10) with { variant "FIELDLENGTH(10)" };
+  type bitstring BIT11 length(11) with { variant "FIELDLENGTH(11)" };
+  type bitstring BIT12 length(12) with { variant "FIELDLENGTH(12)" };
+  type bitstring BIT14 length(14) with { variant "FIELDLENGTH(14)" };
+  type bitstring BIT15 length(15) with { variant "FIELDLENGTH(15)" };
+  type bitstring BIT16 length(16) with { variant "FIELDLENGTH(16)" };
+  type bitstring BIT24 length(24) with { variant "FIELDLENGTH(24)" };
+  type bitstring BIT31 length(31) with { variant "FIELDLENGTH(31)" };
+  type bitstring BIT56 length(56) with { variant "FIELDLENGTH(56)" };
+  
+  type record of bitstring Bitstrings with { variant "" };
+  type Bitstrings BitstringList;
+  type set of bitstring BitstringSet with { variant "" };
+
+  //****************************************************
+  // Octetstrings
+  //****************************************************
+
+  //octetstring with fixed length
+  type octetstring OCT0n length(0) with { variant "" };
+  type octetstring OCT1n length(1) with { variant "" };
+  type octetstring OCT2n length(2) with { variant "" };
+  type octetstring OCT3n length(3) with { variant "" };
+  type octetstring OCT4n length(4) with { variant "" };
+  type octetstring OCT5n length(5) with { variant "" };
+  type octetstring OCT6n length(6) with { variant "" };
+  type octetstring OCT7n length(7) with { variant "" };
+  type octetstring OCT8n length(8) with { variant "" };
+  type octetstring OCT9n length(9) with { variant "" };
+  type octetstring OCT10n length(10) with { variant "" };
+  type octetstring OCT11n length(11) with { variant "" };
+  type octetstring OCT12n length(12) with { variant "" };
+  type octetstring OCT13n length(13) with { variant "" };
+  type octetstring OCT14n length(14) with { variant "" };
+  type octetstring OCT15n length(15) with { variant "" };
+  type octetstring OCT16n length(16) with { variant "" };
+  type octetstring OCT17n length(17) with { variant "" };
+  type octetstring OCT18n length(18) with { variant "" };
+  type octetstring OCT19n length(19) with { variant "" };
+  type octetstring OCT20n length(20) with { variant "" };
+  type octetstring OCT28n length(28) with { variant "" };
+  type octetstring OCT32n length(32) with { variant "" };
+  type octetstring OCT34n length(34) with { variant "" };
+  type octetstring OCT46n length(46) with { variant "" };
+  type octetstring OCT50n length(50) with { variant "" };
+  type octetstring OCT69n length(69) with { variant "" };
+  type octetstring OCT100n length(100) with { variant "" };
+  type octetstring OCT128n length(128) with { variant "" };
+  type octetstring OCT500n length(500) with { variant "" };
+  type octetstring OCTNn with { variant "" };
+
+  //octetstring with length interval
+  type octetstring OCT1_3n length(1..3) with { variant "" };
+  type octetstring OCT1_4n length(1..4) with { variant "" };
+  type octetstring OCT1_5n length(1..5) with { variant "" };
+  type octetstring OCT1_6n length(1..6) with { variant "" };
+  type octetstring OCT1_7n length(1..7) with { variant "" };
+  type octetstring OCT1_8n length(1..8) with { variant "" };
+  type octetstring OCT1_12n length(1..12) with { variant "" };
+  type octetstring OCT1_15n length(1..15) with { variant "" };
+  type octetstring OCT1_16n length(1..16) with { variant "" };
+  type octetstring OCT1_18n length(1..18) with { variant "" };
+  type octetstring OCT1_20n length(1..20) with { variant "" };
+  type octetstring OCT1_24n length(1..24) with { variant "" };
+  type octetstring OCT1_32n length(1..32) with { variant "" };
+  type octetstring OCT1_34n length(1..34) with { variant "" };
+  type octetstring OCT1_46n length(1..46) with { variant "" };
+  type octetstring OCT1_50n length(1..50) with { variant "" };
+  type octetstring OCT1_112n length(1..112) with { variant "" };
+  type octetstring OCT1_127n length(1..127) with { variant "" };
+  type octetstring OCT1_128n length(1..128) with { variant "" };
+  type octetstring OCT1_172n length(1..172) with { variant "" };
+  type octetstring OCT3_5n length(3..5) with { variant "" };
+  type octetstring OCT3_7n length(3..7) with { variant "" };
+  type octetstring OCT3_8n length(3..8) with { variant "" };
+  type octetstring OCT3_14n length(3..14) with { variant "" };
+  type octetstring OCT3_17n length(3..17) with { variant "" };
+  type octetstring OCT4_8n length(4..8) with { variant "" };
+
+  type record of octetstring Octetstrings with { variant "" };
+  type Octetstrings OctetstringList;
+  type set of octetstring OctetstringSet with { variant "" };
+
+  //****************************************************
+  // Charstrings
+  //****************************************************
+
+  //charstring with fixed length
+  type charstring CHAR4 length (4);
+
+  type record of charstring Charstrings with { variant "" };
+  type Charstrings CharstringList;
+  type set of charstring CharstringSet with { variant "" };
+
+  //****************************************************
+  // Hexstrings
+  //****************************************************
+
+  //hexstring with fixed length
+  type hexstring HEX4n length(4) with { variant "" };
+  type hexstring HEX6n length(6) with { variant "" };
+  type hexstring HEX8n length(8) with { variant "" };
+  type hexstring HEX15n length(15) with { variant "" };
+  type hexstring HEX16n length(16) with { variant "" };
+  type hexstring HEX24n length(24) with { variant "" };
+
+  //hexstring with length interval
+  type hexstring HEX0_18n length(0..18) with { variant "" };
+  type hexstring HEX1_20n length(1..20) with { variant "" };
+  type hexstring HEX1_34n length(1..34) with { variant "" };
+
+  type record of hexstring Hexstrings with { variant "" };
+  type Hexstrings HexstringList;
+  type set of hexstring HexstringSet with { variant "" };
+
+  //****************************************************
+  // Integers
+  //****************************************************
+
+  //integer with fixed bit number
+  type integer INT3nb (0..7) with { variant "" };
+  type integer INT4nb (0..15) with { variant "" };
+  type integer INT5nb (0..31) with { variant "" };
+  type integer INT8nb (0..255) with { variant "" };
+
+  //integer with fixed bit number and with padding
+  type integer INT2nbp (0..3) with { variant "" };
+  type integer INT1nbp (0..1) with { variant "" };
+  type integer INT3nbp (0..7) with { variant "" };
+  type integer INT5nbp (0..31) with { variant "" };
+  type integer INT9nbp (0..511) with { variant "" };
+  type integer INT13nbp (0..8191) with { variant "" };
+  type integer INT15nbp (0..32767) with { variant "" };
+
+  //****************************************************
+  // Structures
+  //****************************************************
+
+  //integer record
+  type record of integer Integers with { variant "" };
+  type Integers IntegerList;
+  type record of Integers Integer_array with { variant "" };
+  type set of integer IntegerSet with { variant "" };
+  
+  //****************************************************
+  // Floats
+  //****************************************************
+  
+  type record of float Floats with { variant "" };
+  type Floats FloatList;
+  type set of float FloatSet with { variant "" };
+
+  //****************************************************
+  // Universal Charstrings
+  //****************************************************
+  
+  type record of universal charstring UniversalCharstrings with { variant "" };
+  type UniversalCharstrings UniversalCharstringList;
+  type set of universal charstring UniversalCharstringSet with { variant "" };
+  
+  //****************************************************
+  // Booleans
+  //****************************************************
+  
+  type record of boolean Booleans with { variant "" };
+  type Booleans BooleanList;
+  type set of boolean BooleanSet with { variant "" };
+  
+  //****************************************************
+  // Verdicttypes
+  //****************************************************
+  
+  type record of verdicttype Verdicttypes with { variant "" };
+  type Verdicttypes VerdicttypeList;
+  type set of verdicttype VerdicttypeSet with { variant "" };
+  
+  //****************************************************
+  // Anytypes
+  //****************************************************
+  
+  type record of anytype Anytypes with { variant "" };
+  type Anytypes AnytypeList;
+  type set of anytype AnytypeSet with { variant "" };
+  
+} // end group NativeTypes
+
+//****************************************************
+//****************************************************
+// RAW Encoded Types
+//****************************************************
+//****************************************************
+
+group SimpleRAWEncodedTypes {
+
+  //****************************************************
+  // Bitstrings
+  //****************************************************
+
+  //bitstring with fixed length
+  type bitstring BIT6_BO_LAST length (6) with {variant "BYTEORDER(last)"};
+  type bitstring BIT16_BO_LAST length (16) with {variant "BYTEORDER(last)"};
+  type bitstring BIT32_BO_LAST length (32) with {variant "BYTEORDER(last)"};
+
+  //****************************************************
+  // Octetstrings
+  //****************************************************
+  //octetstring with fixed length
+  type octetstring Dummy length(0) with { variant "FIELDLENGTH(0)" };
+  type octetstring OCT0 length(0) with { variant "FIELDLENGTH(0)" };
+  type octetstring OCT1 length(1) with { variant "FIELDLENGTH(1)" };
+  type octetstring OCT2 length(2) with { variant "FIELDLENGTH(2)" };
+  type octetstring OCT3 length(3) with { variant "FIELDLENGTH(3)" };
+  type octetstring OCT4 length(4) with { variant "FIELDLENGTH(4)" };
+  type octetstring OCT5 length(5) with { variant "FIELDLENGTH(5)" };
+  type octetstring OCT6 length(6) with { variant "FIELDLENGTH(6)" };
+  type octetstring OCT7 length(7) with { variant "FIELDLENGTH(7)" };
+  type octetstring OCT8 length(8) with { variant "FIELDLENGTH(8)" };
+  type octetstring OCT9 length(9) with { variant "FIELDLENGTH(9)" };
+  type octetstring OCT10 length(10) with { variant "FIELDLENGTH(10)" };
+  type octetstring OCT11 length(11) with { variant "FIELDLENGTH(11)" };
+  type octetstring OCT12 length(12) with { variant "FIELDLENGTH(12)" };
+  type octetstring OCT13 length(13) with { variant "FIELDLENGTH(13)" };
+  type octetstring OCT14 length(14) with { variant "FIELDLENGTH(14)" };
+  type octetstring OCT15 length(15) with { variant "FIELDLENGTH(15)" };
+  type octetstring OCT16 length(16) with { variant "FIELDLENGTH(16)" };
+  type octetstring OCT17 length(17) with { variant "FIELDLENGTH(17)" };
+  type octetstring OCT18 length(18) with { variant "FIELDLENGTH(18)" };
+  type octetstring OCT19 length(19) with { variant "FIELDLENGTH(19)" };
+  type octetstring OCT20 length(20) with { variant "FIELDLENGTH(20)" };
+  type octetstring OCT32 length(32) with { variant "FIELDLENGTH(32)" };
+  type octetstring OCT34 length(34) with { variant "FIELDLENGTH(34)" };
+  type octetstring OCT46 length(46) with { variant "FIELDLENGTH(46)" };
+
+  //octetstring with length interval
+  type octetstring OCT1_260 length(1..260) with { variant "" };
+  type octetstring OCT1_8   length(1..8) with { variant "" };
+  type octetstring OCT1_12  length(1..12) with { variant "" };
+  type octetstring OCT1_32  length(1..32) with { variant "" };
+  type octetstring OCT1_50  length(1..50) with { variant "" };
+  type octetstring OCT3_8   length(3..8) with { variant "" };
+
+  type octetstring OCTN with { variant "" };
+
+  //****************************************************
+  // Hexstrings
+  //****************************************************
+
+  //hexstring with fixed length
+  type hexstring HEX1 length(1) with {variant "FIELDLENGTH(1)"};
+
+  //hexstring with length interval
+  type hexstring HEX0_16 length(0..16) with { variant "" };
+  type hexstring HEX5_16 length(5..16) with { variant "" };
+  type hexstring HEX1_32 length(1..32) with { variant "" };
+
+
+  //****************************************************
+  // Integers
+  //****************************************************
+
+  //integer with fixed octet number
+  type integer INT1 (0..255) with { variant "FIELDLENGTH(8)" };
+  type integer LIN1 (0..255) with { variant "FIELDLENGTH(8)" };
+  type integer LIN2 (0..65535) with { variant "FIELDLENGTH(16)" };
+  type integer LIN2_BO_LAST (0..65535) with { variant "FIELDLENGTH(16), COMP(nosign), BYTEORDER(last)" };
+  type integer LIN3_BO_LAST (0..16777215) with { variant "FIELDLENGTH(24), COMP(nosign), BYTEORDER(last)" };
+  type integer LIN4_BO_LAST (0..4294967295) with { variant "FIELDLENGTH(32), COMP(nosign), BYTEORDER(last)" };
+
+  //integer with fixed bit number
+  type integer INT1b (0..1) with { variant "FIELDLENGTH(1)" };
+  type integer INT2b (0..3) with { variant "FIELDLENGTH(2)" };
+  type integer INT3b (0..7) with { variant "FIELDLENGTH(3)" };
+  type integer INT4b (0..15) with { variant "FIELDLENGTH(4)" };
+  type integer INT5b (0..31) with { variant "FIELDLENGTH(5)" };
+  type integer INT6b (0..63) with { variant "FIELDLENGTH(6)" };
+  type integer INT7b (0..127) with { variant "FIELDLENGTH(7)" };
+  type integer INT11b_BO_LAST ( 0 .. 2047 ) with { variant "FIELDLENGTH(11), COMP(nosign), BYTEORDER(last)" };
+  type integer INT12b_BO_LAST ( 0 .. 4095 ) with { variant "FIELDLENGTH(12), COMP(nosign), BYTEORDER(last)" };
+  type integer INT13b_BO_LAST ( 0 .. 8191 ) with { variant "FIELDLENGTH(13), COMP(nosign), BYTEORDER(last)" };
+  type integer INT14b_BO_LAST ( 0 .. 16383 ) with { variant "FIELDLENGTH(14), COMP(nosign), BYTEORDER(last)" };
+  type integer INT18b_BO_LAST ( 0 .. 262143 ) with { variant "FIELDLENGTH(18), COMP(nosign), BYTEORDER(last)" };
+  type integer INT20b_BO_LAST ( 0 .. 1048575 ) with { variant "FIELDLENGTH(20), COMP(nosign), BYTEORDER(last)" };
+  type integer INT31b_BO_LAST ( 0 .. 2147483647 ) with { variant "FIELDLENGTH(31), COMP(nosign), BYTEORDER(last)" };
+
+} // end group SimpleRAWEncodedTypes
+
+group ComponentTypes {
+  type component Dummy_comptype {}
+  type component Dummy_CT {}
+} // end group ComponentTypes
+
+group CompositeTypes {
+  type enumerated Protocols
+    { mtp3, sccp, isup, bicc, qaal2, gcp, bssap, bssmap, ranap, dtap }
+
+  type record of OCT1           OCT1List with { variant "" };
+  type record of OCT2           OCT2List with { variant "" };
+  type record of OCT3           OCT3List with { variant "" };
+  type record of OCT4           OCT4List with { variant "" };
+  type record of OCT5           OCT5List with { variant "" };
+  type record of OCT6           OCT6List with { variant "" };
+  type record of OCT7           OCT7List with { variant "" };
+
+  type record of Dummy_comptype ListOfDummy_comptype with { variant "" };
+  type record of Dummy_CT       ListOfDummy_CT with { variant "" };
+  type record of Protocols      ProtocolList with { variant "" };
+} // end group CompositeTypes
+
+} with { encode "RAW" } /* End of module General_Types */
+
diff --git a/COMMON/src/MobileDomainDefinitions.asn b/COMMON/src/MobileDomainDefinitions.asn
new file mode 100644
index 0000000..0685484
--- /dev/null
+++ b/COMMON/src/MobileDomainDefinitions.asn
@@ -0,0 +1,54 @@
+-- *******************************************************************************
+-- * Copyright (c) 2004, 2014  Ericsson AB
+-- * All rights reserved. This program and the accompanying materials
+-- * are made available under the terms of the Eclipse Public License v1.0
+-- * which accompanies this distribution, and is available at
+-- * http://www.eclipse.org/legal/epl-v10.html
+-- *
+-- * Contributors:
+-- *   Zoltan Jasz - initial implementation and initial documentation
+-- *   Abhishek Gupta
+-- *   Attila Balasko
+-- *   Endre Kulcsar
+-- *   Gabor Bettesch
+-- *   Gabor Szalai
+-- *   Janos Kovesdi
+-- *   Sandor Palugyai
+-- *   Tibor Csondes
+-- *******************************************************************************
+-- 
+--   File:               MobileDomainDefinitions.asn
+--   Rev:                R9A
+--   Prodnr:             CNL 113 368
+--   Reference:          
+
+MobileDomainDefinitions {ccitt (0) identified-organization (4) etsi (0)
+			 mobileDomain (0) mobileDomainDefinitions (0) version1 (1)}
+
+DEFINITIONS ::=
+BEGIN
+
+IMPORTS ;
+
+-- Mobile DomainId
+
+mobileDomainId OBJECT IDENTIFIER ::= {ccitt (0) identified-organization (4) etsi (0) mobileDomain (0)}
+
+-- Mobile Subdomains
+
+gsm-NetworkId OBJECT IDENTIFIER ::= 			{mobileDomainId gsm-Network (1)}
+gsm-AccessId OBJECT IDENTIFIER ::= 			{mobileDomainId gsm-Access (2)}
+gsm-OperationAndMaintenanceId OBJECT IDENTIFIER ::= 	{mobileDomainId gsm-Operation-Maintenance (3)}
+gsm-MessagingId OBJECT IDENTIFIER ::= 			{mobileDomainId gsm-Messaging (4)}
+
+-- Common Component Ids for structuring Mobile Subdomains
+
+CommonComponentId ::= INTEGER (0..9)
+
+ac-Id CommonComponentId ::= 0
+as-Id CommonComponentId ::= 1
+ase-Id CommonComponentId ::= 2
+moduleId CommonComponentId ::= 3
+er-Id CommonComponentId ::= 4
+
+END -- MobileDomainDefinitions
diff --git a/COMMON/src/ProtocolModules_Common.grp b/COMMON/src/ProtocolModules_Common.grp
new file mode 100644
index 0000000..90214d5
--- /dev/null
+++ b/COMMON/src/ProtocolModules_Common.grp
@@ -0,0 +1,39 @@
+<!--
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Zoltan Jasz - initial implementation and initial documentation
+*   Abhishek Gupta
+*   Attila Balasko
+*   Endre Kulcsar
+*   Gabor Bettesch
+*   Gabor Szalai
+*   Janos Kovesdi
+*   Sandor Palugyai
+*   Tibor Csondes
+******************************************************************************/
+//
+//  File:               ProtocolModules_Common.grp
+//  Description:        
+//  Rev:                R9A
+//  Prodnr:             CNL 113 368
+//  Reference:          
+//
+//
+-->
+<!DOCTYPE TITAN_GUI_FileGroup_file>
+<FileGroup TITAN_version="3.1.pl0" >
+    <File_Group name="ProtocolModules_Common" >
+        <File path="General_Types.ttcn" />
+        <File path="MobileDomainDefinitions.asn" />
+        <File path="UsefulTtcn3Types.ttcn" />
+        <File path="XSD.ttcn" />	
+        <File path="general_typedefs.ttcn" />
+        <File path="http_www_w3_org_XML_1998_namespace.ttcn" />		
+    </File_Group>
+</FileGroup>
diff --git a/COMMON/src/UsefulTtcn3Types.ttcn b/COMMON/src/UsefulTtcn3Types.ttcn
new file mode 100644
index 0000000..911e1a5
--- /dev/null
+++ b/COMMON/src/UsefulTtcn3Types.ttcn
@@ -0,0 +1,99 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Zoltan Jasz - initial implementation and initial documentation
+*   Abhishek Gupta
+*   Attila Balasko
+*   Endre Kulcsar
+*   Gabor Bettesch
+*   Gabor Szalai
+*   Janos Kovesdi
+*   Sandor Palugyai
+*   Tibor Csondes
+******************************************************************************/
+//
+//  File:          UsefulTtcn3Types.ttcn
+//  Rev:           R9A
+//  Prodnr:        CNL 113 368
+//
+////////////////////////////////////////////////////////////////////////////////
+module UsefulTtcn3Types {
+
+
+    type integer byte (-128 .. 127) with { variant "/* 8 bit */" };
+
+    type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" };
+
+    type integer short (-32768 .. 32767) with { variant "/*16 bit*/" };
+
+    type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" };
+
+    type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" };
+
+    type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" };
+
+    type integer longlong /* (  -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" };
+
+    type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" };
+
+    type float IEEE754float with { variant "/*IEEE754 float*/" };
+
+    type float IEEE754double with { variant "/*IEEE754 double*/" };
+
+    type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" };
+
+    type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" };
+
+    type universal charstring utf8string with { variant "/*UTF-8*/" };
+
+    type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" };
+
+    type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" };
+
+    type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" };
+
+    type record IDLfixed
+    {
+    	unsignedshort digits,
+    	short scale,
+    	charstring value_
+    }
+    with {
+    variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/";
+    };
+
+    /*
+    type charstring char length (1);
+
+    NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal
+    charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as
+    identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility
+    with previous versions of the TTCN-3 standard. (except Titan doesn't)
+
+    NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding
+    for its values. Also, other properties of the base type can be changed by using attribute mechanisms.
+    */
+
+    type universal charstring uchar length (1);
+
+    /*
+    NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given
+    encoding for its values. Also, other properties of the base type can be changed by using attribute
+    mechanisms.
+    */
+
+    type bitstring bit length (1);
+
+    type hexstring hex length (1);
+
+    type octetstring octet length (1);
+
+}
+with {
+encode "XML";
+}
diff --git a/COMMON/src/XSD.ttcn b/COMMON/src/XSD.ttcn
new file mode 100644
index 0000000..64157a0
--- /dev/null
+++ b/COMMON/src/XSD.ttcn
@@ -0,0 +1,339 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Zoltan Jasz - initial implementation and initial documentation
+*   Abhishek Gupta
+*   Attila Balasko
+*   Endre Kulcsar
+*   Gabor Bettesch
+*   Gabor Szalai
+*   Janos Kovesdi
+*   Sandor Palugyai
+*   Tibor Csondes
+******************************************************************************/
+//
+//  File:          XSD.ttcn
+//  Rev:           R9A
+//  Prodnr:        CNL 113 368
+//
+////////////////////////////////////////////////////////////////////////////////
+module XSD {
+
+import from UsefulTtcn3Types all;
+
+//These constants are used in the XSD date/time type definitions
+const charstring
+  dash := "-",
+  cln  := ":",
+  year := "(0(0(0[1-9]|[1-9][0-9])|[1-9][0-9][0-9])|[1-9][0-9][0-9][0-9])",
+  yearExpansion := "(-([1-9][0-9]#(0,))#(,1))#(,1)",
+  month := "(0[1-9]|1[0-2])",
+  dayOfMonth := "(0[1-9]|[12][0-9]|3[01])",
+  hour := "([01][0-9]|2[0-3])",
+  minute := "([0-5][0-9])",
+  second := "([0-5][0-9])",
+  sFraction := "(.[0-9]#(1,))#(,1)",
+  endOfDayExt := "24:00:00(.0#(1,))#(,1)",
+  nums := "[0-9]#(1,)",
+  ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)",
+  durTime := "(T[0-9]#(1,)"&
+             "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"&
+             "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"&
+             "S|"&
+             ".[0-9]#(1,)S))"
+
+//anySimpleType
+
+type XMLCompatibleString AnySimpleType
+with {
+variant "XSD:anySimpleType";
+};
+
+//anyType;
+
+type record AnyType
+{
+	record of String attr,
+	record of String elem_list
+}
+with {
+variant "XSD:anyType";
+variant (attr) "anyAttributes";
+variant (elem_list) "anyElement";
+};
+// String types
+
+type XMLCompatibleString String
+with {
+variant "XSD:string";
+};
+
+type XMLStringWithNoCRLFHT NormalizedString
+with {
+variant "XSD:normalizedString";
+};
+
+type NormalizedString Token
+with {
+variant "XSD:token";
+};
+
+type XMLStringWithNoWhitespace Name
+with {
+variant "XSD:Name";
+};
+
+type XMLStringWithNoWhitespace NMTOKEN
+with {
+variant "XSD:NMTOKEN";
+};
+
+type Name NCName
+with {
+variant "XSD:NCName";
+};
+
+type NCName ID
+with {
+variant "XSD:ID";
+};
+
+type NCName IDREF
+with {
+variant "XSD:IDREF";
+};
+
+type NCName ENTITY
+with {
+variant "XSD:ENTITY";
+};
+
+type octetstring HexBinary
+with {
+variant "XSD:hexBinary";
+};
+
+type octetstring Base64Binary
+with {
+variant "XSD:base64Binary";
+};
+
+type XMLStringWithNoCRLFHT AnyURI
+with {
+variant "XSD:anyURI";
+};
+
+type charstring Language (pattern "[a-zA-Z]#(1,8)(-\w#(1,8))#(0,)")
+with {
+variant "XSD:language";
+};
+// Integer types
+
+type integer Integer
+with {
+variant "XSD:integer";
+};
+
+type integer PositiveInteger (1 .. infinity)
+with {
+variant "XSD:positiveInteger";
+};
+
+type integer NonPositiveInteger (-infinity .. 0)
+with {
+variant "XSD:nonPositiveInteger";
+};
+
+type integer NegativeInteger (-infinity .. -1)
+with {
+variant "XSD:negativeInteger";
+};
+
+type integer NonNegativeInteger (0 .. infinity)
+with {
+variant "XSD:nonNegativeInteger";
+};
+
+type longlong Long
+with {
+variant "XSD:long";
+};
+
+type unsignedlonglong UnsignedLong
+with {
+variant "XSD:unsignedLong";
+};
+
+type long Int
+with {
+variant "XSD:int";
+};
+
+type unsignedlong UnsignedInt
+with {
+variant "XSD:unsignedInt";
+};
+
+type short Short
+with {
+variant "XSD:short";
+};
+
+type unsignedshort UnsignedShort
+with {
+variant "XSD:unsignedShort";
+};
+
+type byte Byte
+with {
+variant "XSD:byte";
+};
+
+type unsignedbyte UnsignedByte
+with {
+variant "XSD:unsignedByte";
+};
+
+// Float types
+
+type float Decimal
+with {
+variant "XSD:decimal";
+};
+
+type IEEE754float Float
+with {
+variant "XSD:float";
+};
+
+type IEEE754double Double
+with {
+variant "XSD:double";
+};
+
+// Time types
+
+type charstring Duration (pattern
+  "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" &
+  "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})")
+with {
+variant "XSD:duration";
+};
+
+type charstring DateTime (pattern
+  "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}T({hour}{cln}{minute}{cln}{second}" &
+ "{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" )
+with {
+variant "XSD:dateTime";
+};
+
+type charstring Time (pattern
+  "({hour}{cln}{minute}{cln}{second}{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" )
+with {
+variant "XSD:time";
+};
+
+type charstring Date (pattern
+  "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" )
+with {
+variant "XSD:date";
+};
+
+type charstring GYearMonth (pattern
+  "{yearExpansion}{year}{dash}{month}{ZorTimeZoneExt}" )
+with {
+variant "XSD:gYearMonth";
+};
+
+type charstring GYear (pattern
+  "{yearExpansion}{year}{ZorTimeZoneExt}" )
+with {
+variant "XSD:gYear";
+};
+
+type charstring GMonthDay (pattern
+ "{dash}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" )
+with {
+variant "XSD:gMonthDay";
+};
+
+type charstring GDay (pattern
+  "{dash}{dash}{dash}{dayOfMonth}{ZorTimeZoneExt}" )
+with {
+variant "XSD:gDay";
+};
+
+type charstring GMonth (pattern
+  "{dash}{dash}{month}{ZorTimeZoneExt}" )
+with {
+variant "XSD:gMonth";
+};
+
+// Sequence types
+
+type record of NMTOKEN NMTOKENS
+with {
+variant "XSD:NMTOKENS";
+};
+
+type record of IDREF IDREFS
+with {
+variant "XSD:IDREFS";
+};
+
+type record of ENTITY ENTITIES
+with {
+variant "XSD:ENTITIES";
+};
+
+type record QName
+{
+	AnyURI uri  optional,
+	NCName name
+}
+with {
+variant "XSD:QName";
+};
+
+// Boolean type
+
+type boolean Boolean
+with {
+variant "XSD:boolean";
+};
+
+//TTCN-3 type definitions supporting the mapping of W3C XML Schema built-in datatypes
+
+type utf8string XMLCompatibleString
+(
+	char(0,0,0,9)..char(0,0,0,9),
+	char(0,0,0,10)..char(0,0,0,10),
+	char(0,0,0,12)..char(0,0,0,12),
+  	char(0,0,0,32)..char(0,0,215,255),
+  	char(0,0,224,0)..char(0,0,255,253),
+  	char(0,1,0,0)..char(0,16,255,253)
+)
+
+type utf8string XMLStringWithNoWhitespace
+(
+	char(0,0,0,33)..char(0,0,215,255),
+  	char(0,0,224,0)..char(0,0,255,253),
+  	char(0,1,0,0)..char(0,16,255,253)
+)
+
+type utf8string XMLStringWithNoCRLFHT
+(
+	char(0,0,0,32)..char(0,0,215,255),
+ 	char(0,0,224,0)..char(0,0,255,253),
+  	char(0,1,0,0)..char(0,16,255,253)
+)
+
+}
+with{
+encode "XML"
+}
diff --git a/COMMON/src/general_typedefs.ttcn b/COMMON/src/general_typedefs.ttcn
new file mode 100644
index 0000000..6432e53
--- /dev/null
+++ b/COMMON/src/general_typedefs.ttcn
@@ -0,0 +1,236 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Zoltan Jasz - initial implementation and initial documentation
+*   Abhishek Gupta
+*   Attila Balasko
+*   Endre Kulcsar
+*   Gabor Bettesch
+*   Gabor Szalai
+*   Janos Kovesdi
+*   Sandor Palugyai
+*   Tibor Csondes
+******************************************************************************/
+//
+//  File:               general_typedefs.ttcn
+//  Rev:                R9A
+//  Prodnr:             CNL 113 368
+//  Reference:          
+
+module general_typedefs
+{
+
+group SimpleNativeTypes
+{
+//octetstring with fixed length
+type octetstring OCT0n length(0);
+type octetstring OCT1n length(1);
+type octetstring OCT2n length(2);
+type octetstring OCT3n length(3);
+type octetstring OCT4n length(4);
+type octetstring OCT5n length(5);
+type octetstring OCT6n length(6);
+type octetstring OCT7n length(7);
+type octetstring OCT8n length(8);
+type octetstring OCT9n length(9);
+type octetstring OCT10n length(10);
+type octetstring OCT11n length(11);
+type octetstring OCT12n length(12);
+type octetstring OCT13n length(13);
+type octetstring OCT14n length(14);
+type octetstring OCT15n length(15);
+type octetstring OCT16n length(16);
+type octetstring OCT17n length(17);
+type octetstring OCT18n length(18);
+type octetstring OCT19n length(19);
+type octetstring OCT20n length(20);
+type octetstring OCT28n length(28);
+type octetstring OCT32n length(32);
+type octetstring OCT34n length(34);
+type octetstring OCT46n length(46);
+type octetstring OCT50n length(50);
+type octetstring OCT69n length(69);
+type octetstring OCT100n length(100);
+type octetstring OCT128n length(128);
+type octetstring OCT500n length(500);
+type octetstring OCTNn;
+
+//octetstring with length interval
+type octetstring OCT1_3n length(1..3);
+type octetstring OCT1_4n length(1..4);
+type octetstring OCT1_5n length(1..5);
+type octetstring OCT1_6n length(1..6);
+type octetstring OCT1_7n length(1..7);
+type octetstring OCT1_8n length(1..8);
+type octetstring OCT1_12n length(1..12);
+type octetstring OCT1_15n length(1..15);
+type octetstring OCT1_16n length(1..16);
+type octetstring OCT1_18n length(1..18);
+type octetstring OCT1_20n length(1..20);
+type octetstring OCT1_24n length(1..24);
+type octetstring OCT1_34n length(1..34);
+type octetstring OCT1_46n length(1..46);
+type octetstring OCT1_50n length(1..50);
+type octetstring OCT1_112n length(1..112);
+type octetstring OCT1_127n length(1..127);
+type octetstring OCT1_128n length(1..128);
+type octetstring OCT1_172n length(1..172);
+type octetstring OCT3_5n length(3..5);
+type octetstring OCT3_7n length(3..7);
+type octetstring OCT3_8n length(3..8);
+type octetstring OCT3_17n length(3..17);
+type octetstring OCT4_8n length(4..8);
+
+//hexstring with fixed length
+type hexstring HEX24n length(24);
+
+//hexstring with length interval
+type hexstring HEX0_18n length(0..18);
+type hexstring HEX1_20n length(1..20);
+
+
+//bitstring with fixed length
+type bitstring BIT1n length(1);
+type bitstring BIT2n length(2);
+type bitstring BIT3n length(3);
+type bitstring BIT4n length(4);
+type bitstring BIT5n length(5);
+type bitstring BIT6n length(6);
+type bitstring BIT7n length(7);
+type bitstring BIT8n length(8);
+type bitstring BIT9n length(9);
+type bitstring BIT12n length(12);
+type bitstring BIT14n length(14);
+type bitstring BIT15n length(15);
+type bitstring BIT16n length(16);
+type bitstring BIT56n length(56);
+
+//bitstring with length interval
+type bitstring BIT14_24n length(14..24);
+
+//bitstring to be padded with fixed length 
+type bitstring BIT1np length(1);
+type bitstring BIT2np length(2);
+type bitstring BIT3np length(3);
+type bitstring BIT4np length(4);
+type bitstring BIT5np length(5);
+type bitstring BIT6np length(6);
+type bitstring BIT7np length(7);
+type bitstring BIT15np length(15);
+
+//integer with fixed bit number
+type integer INT3nb (0..7);
+type integer INT4nb (0..15);
+type integer INT5nb (0..31);
+type integer INT8nb (0..255);
+
+//integer with fixed bit number and with padding
+type integer INT2nbp (0..3);
+type integer INT1nbp (0..1);
+type integer INT3nbp (0..7);
+type integer INT5nbp (0..31);
+type integer INT9nbp (0..511);
+type integer INT13nbp (0..8095);
+type integer INT15nbp (0..32767);
+
+}// end group NativeTypes
+
+group SimpleRAWEncodedTypes
+{
+//octetstring with fixed length
+type octetstring Dummy length(0) with { variant "FIELDLENGTH(0)" };
+type octetstring OCT0 length(0) with { variant "FIELDLENGTH(0)" };
+type octetstring OCT1 length(1) with { variant "FIELDLENGTH(1)" };
+type octetstring OCT2 length(2) with { variant "FIELDLENGTH(2)" };
+type octetstring OCT3 length(3) with { variant "FIELDLENGTH(3)" };
+type octetstring OCT4 length(4) with { variant "FIELDLENGTH(4)" };
+type octetstring OCT5 length(5) with { variant "FIELDLENGTH(5)" };
+type octetstring OCT6 length(6) with { variant "FIELDLENGTH(6)" };
+type octetstring OCT7 length(7) with { variant "FIELDLENGTH(7)" };
+type octetstring OCT8 length(8) with { variant "FIELDLENGTH(8)" };
+type octetstring OCT9 length(9) with { variant "FIELDLENGTH(9)" };
+type octetstring OCT10 length(10) with { variant "FIELDLENGTH(10)" };
+type octetstring OCT11 length(11) with { variant "FIELDLENGTH(11)" };
+type octetstring OCT12 length(12) with { variant "FIELDLENGTH(12)" };
+type octetstring OCT13 length(13) with { variant "FIELDLENGTH(13)" };
+type octetstring OCT14 length(14) with { variant "FIELDLENGTH(14)" };
+type octetstring OCT15 length(15) with { variant "FIELDLENGTH(15)" };
+type octetstring OCT16 length(16) with { variant "FIELDLENGTH(16)" };
+type octetstring OCT17 length(17) with { variant "FIELDLENGTH(17)" };
+type octetstring OCT18 length(18) with { variant "FIELDLENGTH(18)" };
+type octetstring OCT19 length(19) with { variant "FIELDLENGTH(19)" };
+type octetstring OCT20 length(20) with { variant "FIELDLENGTH(20)" };
+type octetstring OCT32 length(32) with { variant "FIELDLENGTH(32)" };
+type octetstring OCT34 length(34) with { variant "FIELDLENGTH(34)" };
+type octetstring OCT46 length(46) with { variant "FIELDLENGTH(46)" };
+
+//octetstring with length interval
+type octetstring OCT1_12 length(1..12) with { variant "" };
+type octetstring OCT1_8 length(1..8) with { variant "" };
+type octetstring OCT3_8 length(3..8) with { variant "" };
+type octetstring OCT1_50 length(1..50) with { variant "" };
+type octetstring OCTN with { variant "" };
+
+//bitstring with fixed length
+type bitstring BIT1 length(1) with { variant "FIELDLENGTH (1)" };
+type bitstring BIT2 length(2) with { variant "FIELDLENGTH(2)" };
+type bitstring BIT3 length(3) with { variant "FIELDLENGTH(3)" };
+type bitstring BIT4 length(4) with { variant "FIELDLENGTH(4)" };
+type bitstring BIT5 length(5) with { variant "FIELDLENGTH(5)" };
+type bitstring BIT6 length(6) with { variant "FIELDLENGTH(6)" };
+type bitstring BIT7 length(7) with { variant "FIELDLENGTH(7)" };
+type bitstring BIT8 length(8) with { variant "FIELDLENGTH(8)" };
+type bitstring BIT9 length(9) with { variant "FIELDLENGTH(9)" };
+type bitstring BIT12 length(12) with { variant "FIELDLENGTH(12)" };
+type bitstring BIT14 length(14) with { variant "FIELDLENGTH(14)" };
+type bitstring BIT15 length(15) with { variant "FIELDLENGTH(15)" };
+type bitstring BIT16 length(16) with { variant "FIELDLENGTH(16)" };
+type bitstring BIT24 length(24) with { variant "FIELDLENGTH(24)" };
+type bitstring BIT31 length(31) with { variant "FIELDLENGTH(31)" };
+type bitstring BIT56 length(56) with { variant "FIELDLENGTH(56)" };
+
+type hexstring HEX1 length(1) with {variant "FIELDLENGTH(1)"};
+    
+//integer with fixed octet number
+type integer INT1 (0..255) with { variant "FIELDLENGTH(8)" };
+type integer LIN1 (0..255) with { variant "FIELDLENGTH(8)" }
+type integer LIN2 (0..65535) with { variant "FIELDLENGTH(16)" }
+
+//integer with fixed bit number
+type integer INT7b (0..127) with { variant "FIELDLENGTH(7)" };
+
+//integer record
+type record of integer Integers;
+type record of Integers Integer_array;
+
+} with {encode "RAW"} // end group SimpleRAWEncodedTypes
+
+  group ComponentTypes
+  {
+   type component Dummy_comptype {}
+  }
+
+  group CompositeTypes
+  {
+   type enumerated Protocols
+    { mtp3, sccp, isup, bicc, qaal2, gcp, bssap, bssmap, ranap, dtap }
+
+   type record of OCT1           OCT1List;
+   type record of OCT2           OCT2List;
+   type record of OCT3           OCT3List;
+   type record of OCT4           OCT4List;
+   type record of OCT5           OCT5List;
+   type record of OCT6           OCT6List;
+   type record of OCT7           OCT7List;
+
+   type record of Dummy_comptype ListOfDummy_comptype;
+   
+   type record of Protocols      ProtocolList;
+  }
+
+}with { encode "RAW"} /* End of module general_typedefs */ 
diff --git a/COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn b/COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn
new file mode 100644
index 0000000..99f570a
--- /dev/null
+++ b/COMMON/src/http_www_w3_org_XML_1998_namespace.ttcn
@@ -0,0 +1,150 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+*   Zoltan Jasz - initial implementation and initial documentation
+*   Abhishek Gupta
+*   Attila Balasko
+*   Endre Kulcsar
+*   Gabor Bettesch
+*   Gabor Szalai
+*   Janos Kovesdi
+*   Sandor Palugyai
+*   Tibor Csondes
+******************************************************************************/
+//
+//  File:               http_www_w3_org_XML_1998_namespace.ttcn
+//  Rev:                R9A
+//  Prodnr:             CNL 113 368
+//  Reference:
+
+module http_www_w3_org_XML_1998_namespace {
+
+
+import from XSD all;
+
+
+/* See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+
+    This schema document describes the XML namespace, in a form
+    suitable for import by other schema documents.  
+
+    Note that local names in this namespace are intended to be defined
+    only by the World Wide Web Consortium or its subgroups.  The
+    following names are currently defined in this namespace and should
+    not be used with conflicting semantics by any Working Group,
+    specification, or document instance:
+
+    base (as an attribute name): denotes an attribute whose value
+         provides a URI to be used as the base for interpreting any
+         relative URIs in the scope of the element on which it
+         appears; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML Base specification.
+
+    lang (as an attribute name): denotes an attribute whose value
+         is a language code for the natural language of the content of
+         any element; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML specification.
+
+    space (as an attribute name): denotes an attribute whose
+         value is a keyword indicating what whitespace processing
+         discipline is intended for the content of the element; its
+         value is inherited.  This name is reserved by virtue of its
+         definition in the XML specification.
+
+    Father (in any context at all): denotes Jon Bosak, the chair of 
+         the original XML Working Group.  This name is reserved by 
+         the following decision of the W3C XML Plenary and 
+         XML Coordination groups:
+
+             In appreciation for his vision, leadership and dedication
+             the W3C XML Plenary on this 10th day of February, 2000
+             reserves for Jon Bosak in perpetuity the XML name
+             xml:Father */
+
+
+/* This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows: */
+/* < */
+/* schema . . . */
+/* > */
+/* . . . */
+/* < */
+/* import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/ */
+/* > */
+/* Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g. */
+/* < */
+/* type . . . */
+/* > */
+/* . . . */
+/* < */
+/* attributeGroup ref="xml:specialAttrs"/ */
+/* > */
+/* will define a type which will schema-validate an instance
+         element with any of those attributes */
+
+
+/* In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2001/03/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself.  In other words, if the XML Schema namespace changes, the version
+   of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2001/03/xml.xsd will not change. */
+
+
+/* In due course, we should install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values . . . */
+type XSD.Language Lang
+with {
+variant "name as uncapitalized";
+variant "attribute";
+};
+
+
+type enumerated Space
+{
+	default_,
+	preserve
+}
+with {
+variant "text 'default_' as 'default'";
+variant "name as uncapitalized";
+variant "defaultForEmpty as 'preserve'";
+variant "attribute";
+};
+
+
+/* See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute. */
+type XSD.AnyURI Base
+with {
+variant "name as uncapitalized";
+variant "attribute";
+};
+
+
+}
+with {
+encode "XML";
+variant "namespace as 'http://www.w3.org/XML/1998/namespace'";
+variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
+extension "version R9A"
+}
