diff --git a/silkaj/membership.py b/silkaj/membership.py
index ea3ea1a01e4d0e89f7022b01125cb8c94d5f458e..b23a7f6aff26d69ae77ab49fa8ed02a2fb3599d2 100644
--- a/silkaj/membership.py
+++ b/silkaj/membership.py
@@ -25,13 +25,12 @@ from tabulate import tabulate
 from duniterpy.api import bma
 from duniterpy.documents import BlockUID, block_uid, Membership
 
-from silkaj import auth, wot
+from silkaj import auth, wot, tui
 from silkaj.tools import coroutine
 from silkaj.network_tools import ClientInstance
 from silkaj.blockchain_tools import BlockchainParams, HeadBlock
 from silkaj.license import license_approval
 from silkaj.constants import SUCCESS_EXIT_STATUS
-from silkaj.tui import display_pubkey_and_checksum
 
 
 @click.command(
@@ -39,14 +38,9 @@ from silkaj.tui import display_pubkey_and_checksum
     help="Send and sign membership document: \n\
 for first emission and for renewal",
 )
-@click.option(
-    "--dry-run",
-    is_flag=True,
-    help="By-pass licence, confirmation. \
-Do not send the document, but display it instead",
-)
+@click.pass_context
 @coroutine
-async def send_membership(dry_run):
+async def send_membership(ctx):
 
     # Authentication
     key = auth.auth_method()
@@ -60,18 +54,13 @@ async def send_membership(dry_run):
 
     # Display license and ask for confirmation
     currency = head_block["currency"]
-    if not dry_run:
-        license_approval(currency)
+    license_approval(currency)
 
     # Confirmation
     client = ClientInstance().client
     await display_confirmation_table(identity_uid, key.pubkey, identity_timestamp)
-    if not dry_run:
-        if not click.confirm(
-            "Do you confirm sending a membership document for this identity?"
-        ):
-            await client.close()
-            sys.exit(SUCCESS_EXIT_STATUS)
+    if not ctx.obj["DISPLAY_DOCUMENT"]:
+        await tui.send_doc_confirmation("membership document for this identity")
 
     membership = generate_membership_document(
         currency,
@@ -86,10 +75,9 @@ async def send_membership(dry_run):
 
     logging.debug(membership.signed_raw())
 
-    if dry_run:
-        await client.close()
+    if ctx.obj["DISPLAY_DOCUMENT"]:
         click.echo(membership.signed_raw())
-        sys.exit(SUCCESS_EXIT_STATUS)
+        await tui.send_doc_confirmation("membership document for this identity")
 
     # Send the membership signed raw document to the node
     response = await client(bma.blockchain.membership, membership.signed_raw())
@@ -137,7 +125,7 @@ async def display_confirmation_table(identity_uid, pubkey, identity_timestamp):
         table.append(["Pending membership documents will expire", expiration])
 
     table.append(["User Identifier (UID)", identity_uid])
-    table.append(["Public Key", display_pubkey_and_checksum(pubkey)])
+    table.append(["Public Key", tui.display_pubkey_and_checksum(pubkey)])
 
     table.append(["Block Identity", str(identity_timestamp)[:45] + "…"])
 
diff --git a/tests/test_membership.py b/tests/test_membership.py
index 7ff1eb56fc6398b23c7815198c63e9df54e130f0..292b6f892dcd83c4757150f05df8575d9e25780b 100644
--- a/tests/test_membership.py
+++ b/tests/test_membership.py
@@ -79,14 +79,14 @@ async def patched_choose_identity(pubkey):
 
 
 @pytest.mark.parametrize(
-    "dry_run, confirmation, exit_code",
+    "display, confirmation, exit_code",
     [
-        (True, True, SUCCESS_EXIT_STATUS),
+        (True, True, FAILURE_EXIT_STATUS),
         (False, False, SUCCESS_EXIT_STATUS),
         (False, True, FAILURE_EXIT_STATUS),
     ],
 )
-def test_membership_cmd(dry_run, confirmation, exit_code, monkeypatch):
+def test_membership_cmd(display, confirmation, exit_code, monkeypatch):
     # Monkeypatch and Mock
     monkeypatch.setattr(auth, "auth_method", patched_auth_method)
     monkeypatch.setattr(HeadBlock, "get_head", patched_head_block)
@@ -98,7 +98,7 @@ def test_membership_cmd(dry_run, confirmation, exit_code, monkeypatch):
         "display_confirmation_table",
         patched_display_confirmation_table,
     )
-    if not dry_run:
+    if not display:
         patched_generate_membership_document = Mock()
         monkeypatch.setattr(
             membership,
@@ -107,9 +107,8 @@ def test_membership_cmd(dry_run, confirmation, exit_code, monkeypatch):
         )
 
     # Run membership command
-    command = ["membership"]
-    if dry_run:
-        command += ["--dry-run"]
+    command = ["--display"] if display else []
+    command += ["membership"]
     confirmations = "No\nYes\nYes" if confirmation else "No\nYes\nNo"
     result = CliRunner().invoke(cli, args=command, input=confirmations)
 
@@ -119,7 +118,7 @@ def test_membership_cmd(dry_run, confirmation, exit_code, monkeypatch):
         pubkey,
         identity_timestamp,
     )
-    if not dry_run and confirmation:
+    if not display and confirmation:
         patched_generate_membership_document.assert_called_with(
             currency,
             pubkey,
@@ -127,7 +126,7 @@ def test_membership_cmd(dry_run, confirmation, exit_code, monkeypatch):
             identity_uid,
             identity_timestamp,
         )
-    if dry_run:
+    if display:
         assert "Type: Membership" in result.output
 
     assert result.exit_code == exit_code