diff --git a/src/isup.hrl b/src/isup.hrl
index b00eee3..7190deb 100644
--- a/src/isup.hrl
+++ b/src/isup.hrl
@@ -100,3 +100,9 @@
 	screening_ind,		% only in calling party
 	phone_number}
 	).
+
+-record(isup_msg, {
+	msg_type,
+	cic,
+	parameters
+	}).
diff --git a/src/isup_codec.erl b/src/isup_codec.erl
index a98da31..523a0e5 100644
--- a/src/isup_codec.erl
+++ b/src/isup_codec.erl
@@ -23,11 +23,13 @@
 
 -export([parse_isup_msg/1, encode_isup_msg/1]).
 
+-compile(export_all).
+
 parse_isup_party(<<>>, OddEven, DigitList) ->
 	% in case of odd number of digits, we need to cut the last
 	case OddEven of
 		1 ->
-			lists:sublist(DigitList, lists:length(DigitList)-1);
+			lists:sublist(DigitList, length(DigitList)-1);
 		0 ->
 			DigitList
 	end;
@@ -41,7 +43,7 @@
 
 
 % parse a single option
-parse_isup_opt(?ISUP_PAR_CALLED_P_NUM, OptLen, Content) ->
+parse_isup_opt(OptType = ?ISUP_PAR_CALLED_P_NUM, _OptLen, Content) ->
 	% C.3.7 Called Party Number
 	<<OddEven:1, Nature:7, Inn:1, NumPlan:3, 0:4, Remain/binary>> = Content,
 	PhoneNum = parse_isup_party(Remain, OddEven),
@@ -49,7 +51,7 @@
 				internal_net_num = Inn,
 				numbering_plan = NumPlan,
 				phone_number = PhoneNum}};
-parse_isup_opt(?ISUP_PAR_CALLING_P_NUM, OptLen, Content) ->
+parse_isup_opt(OptType = ?ISUP_PAR_CALLING_P_NUM, _OptLen, Content) ->
 	% C.3.8 Calling Party Number
 	<<OddEven:1, Nature:7, Ni:1, NumPlan:3, PresRestr:2, Screen:2, Remain/binary>> = Content,
 	PhoneNum = parse_isup_party(Remain, OddEven),
@@ -59,7 +61,7 @@
 				present_restrict = PresRestr,
 				screening_ind = Screen,
 				phone_number = PhoneNum}};
-parse_isup_opt(?ISUP_PAR_CONNECTED_NUM, OptLen, Content) ->
+parse_isup_opt(OptType = ?ISUP_PAR_CONNECTED_NUM, _OptLen, Content) ->
 	% C.3.14 Connected Number
 	<<OddEven:1, Nature:7, 0:1, NumPlan:3, PresRestr:2, Screen:2, Remain/binary>> = Content,
 	PhoneNum = parse_isup_party(Remain, OddEven),
@@ -68,9 +70,9 @@
 				present_restrict = PresRestr,
 				screening_ind = Screen,
 				phone_number = PhoneNum}};
-parse_isup_opt(?ISUP_PAR_SUBSEQ_NUM, OptLen, Content) ->
+parse_isup_opt(OptType = ?ISUP_PAR_SUBSEQ_NUM, _OptLen, Content) ->
 	% C.3.32 Subsequent Number
-	<<OddEven:1, Spare:7, Remain/binary>> = Content,
+	<<OddEven:1, 0:7, Remain/binary>> = Content,
 	PhoneNum = parse_isup_party(Remain, OddEven),
 	{OptType, #party_number{phone_number = PhoneNum}};
 parse_isup_opt(OptType, OptLen, Content) ->
@@ -86,7 +88,9 @@
 parse_isup_opts(OptBin, OptList) when is_binary(OptBin) ->
 	<<OptType:8, OptLen:8, Content:OptLen/binary, Remain/binary>> = OptBin,
 	NewOpt = parse_isup_opt(OptType, OptLen, Content),
-	parse_isup_opts(Remain, [NewOpt|OptList]).
+	parse_isup_opts(Remain, OptList ++ [NewOpt]).
+parse_isup_opts(OptBin) ->
+	parse_isup_opts(OptBin, []).
 
 % References to 'Tabe C-xxx' are to Annex C of Q.767
 
@@ -112,7 +116,11 @@
 % Table C-9	Circuit group reset acknowledgement
 parse_isup_msgt(?ISUP_MSGT_GRA, Bin) ->
 	% V: Range and status
-	0;
+	<<PtrVar:8, Remain/binary>> = Bin,
+	RangStsLen = binary:at(Remain, PtrVar),
+	RangeStatus = binary:part(Remain, PtrVar+1, RangStsLen),
+	RangeStsTuple = {?ISUP_PAR_RANGE_AND_STATUS, {RangStsLen, RangeStatus}},
+	[RangeStsTuple];
 % Table C-11	Connect
 parse_isup_msgt(?ISUP_MSGT_CON, Bin) ->
 	<<BackCallInd:16, Remain/binary>> = Bin,
@@ -126,24 +134,38 @@
 % Table C-16	Initial address
 parse_isup_msgt(?ISUP_MSGT_IAM, Bin) ->
 	<<CINat:8, FwCallInd:16/big, CallingCat:8, TransmReq:8, VarAndOpt/binary>> = Bin,
+	%<<CINat:8, FwCallInd:16/big, CallingCat:8, TransmReq:8, PtrVar:8, PtrOpt:8, VarAndOpt/binary>> = Bin,
 	FixedOpts = [{conn_ind_nature, CINat}, {fw_call_ind, FwCallInd}, {calling_cat, CallingCat},
 		     {transm_medium_req, TransmReq}],
+	<<PtrVar:8, PtrOpt:8, _/binary>> = VarAndOpt,
 	% V: Called Party Number
-	VarOpts = FIXME,
+	CalledPartyLen = binary:at(VarAndOpt, PtrVar),
+	CalledParty = binary:part(VarAndOpt, PtrVar+1, CalledPartyLen),
+	VarOpts = [parse_isup_opt(?ISUP_PAR_CALLED_P_NUM, CalledPartyLen, CalledParty)],
+	% Optional part
+	Remain = binary:part(VarAndOpt, 1 + PtrOpt, byte_size(VarAndOpt)-(1+PtrOpt)),
 	Opts = parse_isup_opts(Remain),
-	[FixedOpts,VarOpts,Opts];
+	FixedOpts ++ VarOpts ++ Opts;
 % Table C-17	Release
 parse_isup_msgt(?ISUP_MSGT_REL, Bin) ->
+	<<PtrVar:8, PtrOpt:8, VarAndOpt/binary>> = Bin,
 	% V: Cause indicators
-	VarOpts = FIXME,
+	CauseIndLen = binary:at(VarAndOpt, PtrVar),
+	CauseInd = binary:part(VarAndOpt, PtrVar+1, CauseIndLen),
+	VarOpts = {?ISUP_PAR_CAUSE_IND, {CauseIndLen, CauseInd}},
+	Remain = binary:part(VarAndOpt, 1 + PtrOpt, byte_size(VarAndOpt)-(1+PtrOpt)),
 	Opts = parse_isup_opts(Remain),
-	[VarOpts,Opts];
+	VarOpts ++ Opts;
 % Table C-19	Subsequent address
 parse_isup_msgt(?ISUP_MSGT_SAM, Bin) ->
+	<<PtrVar:8, PtrOpt:8, VarAndOpt/binary>> = Bin,
 	% V: Subsequent number
-	VarOpts = FIXME,
+	SubseqNumLen = binary:at(VarAndOpt, PtrVar),
+	SubsetNum = binary:part(VarAndOpt, PtrVar+1, SubseqNumLen),
+	VarOpts = [{?ISUP_PAR_SUBSEQ_NUM, {SubseqNumLen, SubsetNum}}],
+	Remain = binary:part(VarAndOpt, 1 + PtrOpt, byte_size(VarAndOpt)-(1+PtrOpt)),
 	Opts = parse_isup_opts(Remain),
-	[VarOpts,Opts];
+	VarOpts ++ Opts;
 % Table C-21	Suspend, Resume
 parse_isup_msgt(Msgt, Bin) when Msgt == ?ISUP_MSGT_RES; Msgt == ?ISUP_MSGT_SUS ->
 	<<SuspResInd:8, Remain/binary>> = Bin,
@@ -158,33 +180,38 @@
 	M == ?ISUP_MSGT_RSC;
 	M == ?ISUP_MSGT_UBL;
 	M == ?ISUP_MSGT_UBA ->
-		[].
+		[];
 % Table C-25
 parse_isup_msgt(M, Bin) when
 	M == ?ISUP_MSGT_CGB;
 	M == ?ISUP_MSGT_CGBA;
-	M == ISUP_MSGT_CGU;
-	M == ISUP_MSGT_CGUA ->
-		<<CGMsgt:8, VarBin/binary>> = Bin,
+	M == ?ISUP_MSGT_CGU;
+	M == ?ISUP_MSGT_CGUA ->
+		<<CGMsgt:8, PtrVar:8, VarBin/binary>> = Bin,
 		FixedOpts = [{cg_supv_msgt, CGMsgt}],
 		% V: Range and status
-		VarOpts = FIXME,
-		[FixedOpts|VarOpts];
+		RangStsLen = binary:at(VarBin, PtrVar),
+		RangeStatus = binary:part(VarBin, PtrVar+1, RangStsLen),
+		VarOpts = [{?ISUP_PAR_RANGE_AND_STATUS, {RangStsLen, RangeStatus}}],
+		FixedOpts ++ VarOpts;
 % Table C-26	Circuit group reset
 parse_isup_msgt(?ISUP_MSGT_GRS, Bin) ->
+	<<PtrVar:8, VarBin/binary>> = Bin,
 	% V: Range without status
-	VarOpts = FIXME,
-	VarOpts.
+	RangeLen = binary:at(VarBin, PtrVar),
+	Range = binary:part(VarBin, PtrVar+1, RangeLen),
+	[{?ISUP_PAR_RANGE_AND_STATUS, {RangeLen, Range}}].
 
 
-parse_isup_msg(Databin) when is_binary(DataBin) ->
-	<<0:4, Cic:12/big, MsgType:8, Remain/binary>> = DataBin,
+parse_isup_msg(DataBin) when is_binary(DataBin) ->
+	<<Cic:12/little, 0:4, MsgType:8, Remain/binary>> = DataBin,
 	Opts = parse_isup_msgt(MsgType, Remain),
 	#isup_msg{cic = Cic, msg_type = MsgType, parameters = Opts}.
 
 
+% encode a phone number from a list of digits into the BCD binary sequence
 encode_isup_party(BcdList) ->
-	encode_isup_party(BcdList, <<>>, list:length(BcdList)).
+	encode_isup_party(BcdList, <<>>, length(BcdList)).
 encode_isup_party([], Bin, NumDigits) ->
 	case NumDigits rem 2 of
 		1 ->
@@ -193,8 +220,8 @@
 			{Bin, 0}
 	end;
 encode_isup_party([First,Second|BcdList], Bin, NumDigits) ->
-	encode_isup_party(BcdList, <<Bin/binary, Second:4, First:4>>).
-	
+	encode_isup_party(BcdList, <<Bin/binary, Second:4, First:4>>, NumDigits).
+
 % encode a single option
 encode_isup_opt(?ISUP_PAR_CALLED_P_NUM,
 		#party_number{nature_of_addr_ind = Nature,
@@ -203,7 +230,7 @@
 			      phone_number=  PhoneNum}) ->
 	% C.3.7 Called Party Number
 	{PhoneBin, OddEven} = encode_isup_party(PhoneNum),
-	<<OddEven:1, Nature:7, Inn:1, NumPlan:3, 0:4, PhoneBin/binary>>.
+	<<OddEven:1, Nature:7, Inn:1, NumPlan:3, 0:4, PhoneBin/binary>>;
 encode_isup_opt(?ISUP_PAR_CALLING_P_NUM,
 		#party_number{nature_of_addr_ind = Nature,
 			      number_incompl_ind = Ni,
@@ -226,3 +253,5 @@
 encode_isup_opt(OptNum, {OptLen, Binary}) when is_binary(Binary) ->
 	Binary.
 
+encode_isup_msg(#isup_msg{}) ->
+	foo.
