diff --git a/dyn_huffman.py b/dyn_huffman.py
index 84e383aaf6e50708a18bee50259ee9dfb26a38db..4ff9dc712bb73e57aaa4b8f1f930dcdc26014cbc 100644
--- a/dyn_huffman.py
+++ b/dyn_huffman.py
@@ -209,20 +209,28 @@ def decode(encoded: str) -> (str, str):
 
 def main() -> None:
     parser = argparse.ArgumentParser(prog='dyn_huffman.py')
-    parser.add_argument('input')
+    group = parser.add_mutually_exclusive_group(required=True)
+    group.add_argument('-e', '--encode', metavar='TEXT',
+                       help='Encode given input string')
+    group.add_argument('-d', '--decode', metavar='BINARY',
+                       help='Decode binary string')
 
     args = parser.parse_args()
 
-    print('=============== Encoding ===============')
-    encoded_input = encode(args.input)
-    print(f'Code final: {encoded_input}')
-
+    print('============= Vitter params =============')
+    e, r = compute_vitter_params(len(LIST_ALPHABET))
+    print(f'e = {e}\tr = {r}')
     print()
 
-    print('=============== Decoding ===============')
-    with_nyt, without_nyt = decode(encoded_input)
-    print(f'Message initial avec NYT : {with_nyt}')
-    print(f'Message initial sans NYT : {without_nyt}')
+    if args.encode:
+        print('=============== Encodage ===============')
+        encoded_input = encode(args.encode)
+        print(f'Code final: {encoded_input}')
+    elif args.decode:
+        print('=============== Décodage ===============')
+        with_nyt, without_nyt = decode(args.decode)
+        print(f'Message initial avec NYT : {with_nyt}')
+        print(f'Message initial sans NYT : {without_nyt}')
 
 
 if __name__ == "__main__":