diff --git a/EtcdConnector/pom.xml b/EtcdConnector/pom.xml
index d79c7fa..46c0690 100644
--- a/EtcdConnector/pom.xml
+++ b/EtcdConnector/pom.xml
@@ -9,7 +9,7 @@
4.0.0
etcdconnector
- 1.1-SNAPSHOT
+ 1.2-SNAPSHOT
diff --git a/EtcdConnector/src/main/java/eu/mikroskeem/utils/etcdconnector/EtcdConnector.java b/EtcdConnector/src/main/java/eu/mikroskeem/utils/etcdconnector/EtcdConnector.java
index efcea6d..56d2750 100644
--- a/EtcdConnector/src/main/java/eu/mikroskeem/utils/etcdconnector/EtcdConnector.java
+++ b/EtcdConnector/src/main/java/eu/mikroskeem/utils/etcdconnector/EtcdConnector.java
@@ -1,34 +1,80 @@
package eu.mikroskeem.utils.etcdconnector;
-import mousio.client.retry.RetryOnce;
-import mousio.etcd4j.EtcdClient;
-import org.slf4j.LoggerFactory;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.io.IOException;
-import java.net.URI;
+import java.util.List;
+import java.util.function.Function;
+
+public interface EtcdConnector {
-public class EtcdConnector extends EtcdConnectorBase {
/**
- * Sets up EtcdConnector against
- * Etcd server with no encryption
+ * Closes Etcd4j client
*
- * @param etcdUrls url(s) where to connect to
+ * @throws IOException Thrown by Etcd4j
*/
- public EtcdConnector(URI... etcdUrls) throws IOException {
- super();
+ void close() throws IOException;
- /* Set up logger */
- logger = LoggerFactory.getLogger("EtcdConnector");
+ /**
+ * Gets etcd key value
+ *
+ * @param path Key path
+ * @return Key value
+ */
+ @Nullable String getKey(@NotNull String path);
- /* Initialize client */
- initClient(etcdUrls);
+ /**
+ * Gets etcd key value and sets default,
+ * if key isn't defined
+ *
+ * @param path Key path
+ * @param defaultValue Value to set if key is nonexistent
+ * @return Key value
+ */
+ @Nullable String getKey(@NotNull String path, @NotNull String defaultValue);
- /* Test client */
- testEtcd();
- }
+ /**
+ * Gets etcd directory contents and returns it as
+ * List of String
+ *
+ * @param path directory path
+ * @return directory contents
+ */
+ @Nullable List getDir(@NotNull String path);
- @Override void initClient(URI... urls){
- etcdClient = new EtcdClient(urls);
- etcdClient.setRetryHandler(new RetryOnce(5000));
- }
-}
\ No newline at end of file
+ /**
+ * Sets etcd key value
+ *
+ * @param path key path
+ * @param value key value
+ * @return whether write succeeded or not
+ */
+ boolean putKey(@NotNull String path, @NotNull String value);
+
+ /**
+ * Sets etcd key value with TTL
+ *
+ * @param path key path
+ * @param value key value
+ * @param ttl key ttl (seconds)
+ * @return whether write succeeded or not
+ */
+ boolean putKey(@NotNull String path, @NotNull String value, @NotNull Integer ttl);
+
+ /**
+ * Deletes etcd key
+ *
+ * @param path key path
+ * @return whether delete succeeded or not
+ */
+ boolean deleteKey(@NotNull String path);
+
+ /**
+ * Waits for key change
+ *
+ * @param path Key path
+ * @param callback Callback to run
+ */
+ void waitKey(@NotNull String path, @NotNull Function