diff --git a/py/compile.c b/py/compile.c
index 924938e..9e90f82 100644
--- a/py/compile.c
+++ b/py/compile.c
@@ -31,7 +31,8 @@
 #define EMIT_OPT_NONE           (0)
 #define EMIT_OPT_BYTE_CODE      (1)
 #define EMIT_OPT_NATIVE_PYTHON  (2)
-#define EMIT_OPT_ASM_THUMB      (3)
+#define EMIT_OPT_VIPER          (3)
+#define EMIT_OPT_ASM_THUMB      (4)
 
 typedef struct _compiler_t {
     qstr qstr___class__;
@@ -43,6 +44,7 @@
     qstr qstr_assertion_error;
     qstr qstr_micropython;
     qstr qstr_native;
+    qstr qstr_viper;
     qstr qstr_asm_thumb;
 
     pass_kind_t pass;
@@ -764,6 +766,8 @@
     qstr attr = PY_PARSE_NODE_LEAF_ARG(name_nodes[1]);
     if (attr == comp->qstr_native) {
         *emit_options = EMIT_OPT_NATIVE_PYTHON;
+    } else if (attr == comp->qstr_viper) {
+        *emit_options = EMIT_OPT_VIPER;
     } else if (attr == comp->qstr_asm_thumb) {
         *emit_options = EMIT_OPT_ASM_THUMB;
     } else {
@@ -2640,6 +2644,7 @@
     comp->qstr_assertion_error = qstr_from_str_static("AssertionError");
     comp->qstr_micropython = qstr_from_str_static("micropython");
     comp->qstr_native = qstr_from_str_static("native");
+    comp->qstr_viper = qstr_from_str_static("viper");
     comp->qstr_asm_thumb = qstr_from_str_static("asm_thumb");
 
     comp->break_label = 0;
@@ -2684,6 +2689,7 @@
     // compile pass 2 and 3
     emit_t *emit_bc = NULL;
     emit_t *emit_native = NULL;
+    emit_t *emit_viper = NULL;
     emit_inline_asm_t *emit_inline_thumb = NULL;
     for (scope_t *s = comp->scope_head; s != NULL; s = s->next) {
         if (s->emit_options == EMIT_OPT_ASM_THUMB) {
@@ -2706,6 +2712,14 @@
                     comp->emit_method_table = &emit_x64_method_table;
                     break;
 
+                case EMIT_OPT_VIPER:
+                    if (emit_viper == NULL) {
+                        emit_viper = emit_viper_x64_new(max_num_labels);
+                    }
+                    comp->emit = emit_viper;
+                    comp->emit_method_table = &emit_viper_x64_method_table;
+                    break;
+
                 default:
                     if (emit_bc == NULL) {
                         emit_bc = emit_bc_new(max_num_labels);
@@ -2714,6 +2728,8 @@
                     comp->emit_method_table = &emit_bc_method_table;
                     break;
             }
+            //comp->emit = emit_cpython_new(max_num_labels);
+            //comp->emit_method_table = &emit_cpython_method_table;
             compile_scope(comp, s, PASS_2);
             compile_scope(comp, s, PASS_3);
         }
