more distinction

diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c
index 7799145..b136065 100644
--- a/skeletons/constr_CHOICE.c
+++ b/skeletons/constr_CHOICE.c
@@ -673,7 +673,8 @@
 				continue;
 			}
 			/* Fall through */
-		case XCT_UNEXPECTED:
+		case XCT_UNKNOWN_OP:
+		case XCT_UNKNOWN_BO:
 
 			if(ctx->phase != 1)
 				break;	/* Really unexpected */
@@ -693,9 +694,9 @@
 					ctx->step = edx;
 					ctx->phase = 2;
 					break;
-				case XCT_UNEXPECTED:
+				case XCT_UNKNOWN_OP:
+				case XCT_UNKNOWN_BO:
 					continue;
-				case XCT_CLOSING:
 				default:
 					edx = td->elements_count;
 					break;	/* Phase out */
@@ -704,6 +705,16 @@
 			}
 			if(edx != td->elements_count)
 				continue;
+
+			/* It is expected extension */
+			if(specs->extensible) {
+				ASN_DEBUG("Got anticipated extension, "
+					"but NOT IMPLEMENTED YET");
+				/*
+				 * TODO: implement skipping of extensions
+				 */
+			}
+
 			/* Fall through */
 		default:
 			break;