diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java
new file mode 100644
index 0000000000000000000000000000000000000000..9104fd7c5db83edbda3bda797c820c819690058e
--- /dev/null
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java
@@ -0,0 +1,4 @@
+package de.fitko.fitconnect.api.domain.model.event;
+
+public class SecurityEventToken {
+}
diff --git a/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java b/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java
index 3300ea0fed5f3ac4a96561b57ebb0b38a64c44a6..8caa2175892da068c2f4f2c985ce94ffbd38d0b3 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/services/Sender.java
@@ -58,7 +58,7 @@ public interface Sender {
     Optional<OAuthToken> retrieveOAuthToken(final String clientId, final String clientSecret, final String... scope);
 
     /**
-     * Creates a {@link Metadata} object that contains {@link Data}, {@link Attachment} and their hashes so a subscriber
+     * Creates and uploads a {@link Metadata} object that contains {@link Data}, {@link Attachment} and their hashes so a subscriber
      * can verify the integrity.
      *
      * @param data {@link Data} object of the json or xml payload
@@ -67,5 +67,10 @@ public interface Sender {
      */
     Optional<Metadata> createMetadata(final Data data, final List<Attachment> attachments);
 
+    /**
+     *
+     * @param submission
+     * @return
+     */
     Submission sendSubmission(Submission submission);
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java b/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java
index 2b966f8c5f31d25e90e55032ae3918a9b2b16e56..2f8051ee8bdc0f9d6c0bf3b65730c8af7415a186 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/services/Subscriber.java
@@ -5,6 +5,8 @@ import de.fitko.fitconnect.api.domain.auth.OAuthToken;
 import de.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import de.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment;
 import de.fitko.fitconnect.api.domain.model.metadata.data.Data;
+import de.fitko.fitconnect.api.domain.model.event.SecurityEventToken;
+import de.fitko.fitconnect.api.domain.model.submission.Submission;
 import de.fitko.fitconnect.api.domain.validation.ValidationResult;
 
 import java.util.Optional;
@@ -61,4 +63,22 @@ public interface Subscriber {
      * @return a {@link ValidationResult}, that contains errors if the hash-values of the transmitted data are not valid
      */
     ValidationResult validateMetadataHashValues(final Metadata metadata);
+
+    /**
+     *
+     * @param submissionId
+     * @param attachmentId
+     * @return
+     */
+    Optional<Submission> getSubmission(String submissionId, String attachmentId);
+
+    /**
+     *
+     * @param data
+     * @param attachment
+     * @param privateKey
+     * @return
+     */
+    Optional<SecurityEventToken> createSecurityEventToken(Data data, Attachment attachment, RSAKey privateKey);
+
 }
diff --git a/client/src/main/java/de/fitko/fitconnect/TestRunner.java b/client/src/main/java/de/fitko/fitconnect/TestRunner.java
index afdc96bbd97ddcdd2aa86818df56881f6810d31e..830e20dddc41a1aa93249be6647ef1d903ff45e1 100644
--- a/client/src/main/java/de/fitko/fitconnect/TestRunner.java
+++ b/client/src/main/java/de/fitko/fitconnect/TestRunner.java
@@ -1,10 +1,10 @@
 package de.fitko.fitconnect;
 
-import de.fitko.fitconnect.client.SdkClientFactory;
-import de.fitko.fitconnect.client.SenderClient;
 import de.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import de.fitko.fitconnect.api.domain.model.metadata.data.Data;
 import de.fitko.fitconnect.api.domain.model.submission.Submission;
+import de.fitko.fitconnect.client.SdkClientFactory;
+import de.fitko.fitconnect.client.SenderClient;
 
 import java.util.Collections;
 
@@ -23,5 +23,7 @@ public class TestRunner {
                 .createSubmission(Submission.builder().build())
                 .uploadAttachments(Collections.emptyList())
                 .sendSubmission(Metadata.builder().build(), Data.builder().build());
+
     }
+
 }
diff --git a/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java b/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java
index 44d62b447b1e219132c80244fa319d2d0412a173..43c473542505c289e0cd8ff73fa80634b347936b 100644
--- a/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java
+++ b/client/src/main/java/de/fitko/fitconnect/cmd/CommandLineRunner.java
@@ -1,29 +1,30 @@
 package de.fitko.fitconnect.cmd;
 
 import com.beust.jcommander.JCommander;
-import de.fitko.fitconnect.api.domain.model.metadata.Metadata;
-import de.fitko.fitconnect.api.domain.model.metadata.data.Data;
-import de.fitko.fitconnect.api.domain.model.submission.Submission;
 import de.fitko.fitconnect.client.SdkClientFactory;
 import de.fitko.fitconnect.client.SenderClient;
 
-import java.util.Collections;
-
 public class CommandLineRunner {
 
     public static void main(String[] args) {
 
+        final CommandLineArgs cmdArgs = new CommandLineArgs();
+        JCommander build = JCommander.newBuilder()
+                .addObject(cmdArgs)
+                .build();
+
+        build.parse(args);
+
         final SenderClient senderClient = SdkClientFactory.senderClient();
 
-        var clientId = "781f6213-0f0f-4a79-9372-e7187ffda98b";
-        var secret = "PnzR8Vbmhpv_VwTkT34wponqXWK8WBm-LADlryYdV4o";
+        var clientId = cmdArgs.clientId;
+        var secret = cmdArgs.secret;
 
         // sample high -level- api calls to send a submission
-        senderClient.authenticate(clientId,secret)
-                .printToken()
-                .createSubmission(Submission.builder().build())
-                .uploadAttachments(Collections.emptyList())
-                .sendSubmission(Metadata.builder().build(), Data.builder().build());
+        senderClient
+                .authenticate(clientId,secret)
+                .printToken();
+
 
     }
 }
diff --git a/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java b/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java
index d4a2e265a1950059d68e6cb0a730c16afa43cf64..114ec67390fa77d5db10a79322581fc65c61e34a 100644
--- a/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java
+++ b/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java
@@ -17,7 +17,7 @@ import de.fitko.fitconnect.impl.SubmissionSubscriber;
 import de.fitko.fitconnect.impl.auth.DefaultOAuthService;
 import de.fitko.fitconnect.impl.crypto.JWECryptoService;
 import de.fitko.fitconnect.impl.http.ProxyConfig;
-import de.fitko.fitconnect.impl.metadata.MetadataGenerationService;
+import de.fitko.fitconnect.impl.metadata.MetadataUploadService;
 import de.fitko.fitconnect.impl.validation.KeyValidator;
 import de.fitko.fitconnect.impl.validation.MetadataSubmissionValidator;
 import org.slf4j.Logger;
@@ -42,7 +42,7 @@ public class SdkModule extends AbstractModule {
         bind(CryptoService.class).to(JWECryptoService.class);
         bind(CertificateValidator.class).to(KeyValidator.class);
         bind(MetadataValidator.class).to(MetadataSubmissionValidator.class);
-        bind(MetadataService.class).to(MetadataGenerationService.class);
+        bind(MetadataService.class).to(MetadataUploadService.class);
 
         bind(Sender.class).to(SubmissionSender.class);
         bind(Subscriber.class).to(SubmissionSubscriber.class);
diff --git a/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java b/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java
index f3969aaff95ced60f8c93baf9a5085a0ec49905b..654082bd467fcea7bd6fc6f1d1bd27841f49ab3b 100644
--- a/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java
+++ b/impl/src/main/java/de/fitko/fitconnect/impl/SubmissionSubscriber.java
@@ -6,6 +6,8 @@ import de.fitko.fitconnect.api.domain.auth.OAuthToken;
 import de.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import de.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment;
 import de.fitko.fitconnect.api.domain.model.metadata.data.Data;
+import de.fitko.fitconnect.api.domain.model.event.SecurityEventToken;
+import de.fitko.fitconnect.api.domain.model.submission.Submission;
 import de.fitko.fitconnect.api.domain.validation.ValidationResult;
 import de.fitko.fitconnect.api.exceptions.AuthenticationException;
 import de.fitko.fitconnect.api.services.Subscriber;
@@ -64,4 +66,14 @@ public class SubmissionSubscriber implements Subscriber {
     public ValidationResult validateMetadataHashValues(Metadata metadata) {
         return metadataValidator.validateMetadataHashValues(metadata);
     }
+
+    @Override
+    public Optional<Submission> getSubmission(String submissionId, String attachmentId) {
+        throw new UnsupportedOperationException("not yet implemented");
+    }
+
+    @Override
+    public Optional<SecurityEventToken> createSecurityEventToken(Data data, Attachment attachment, RSAKey privateKey) {
+        throw new UnsupportedOperationException("not yet implemented");
+    }
 }
diff --git a/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java b/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java
index d80fa02a66744054c9f7bb068997ce49629dbcdc..f4bfcaa5b4b481fcaa459acf016da478da0efc70 100644
--- a/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java
+++ b/impl/src/main/java/de/fitko/fitconnect/impl/validation/MetadataSubmissionValidator.java
@@ -35,6 +35,7 @@ public class MetadataSubmissionValidator implements MetadataValidator {
     public ValidationResult validateMetadataHashValues(Metadata metadata) {
         return ValidationResult.ok();
     }
+
     private JSONObject toJsonObject(Metadata metadata) throws JsonProcessingException {
         return new JSONObject(new JSONTokener(mapper.writeValueAsString(metadata)));
     }