diff --git a/events/client.go b/events/client.go
index 81dfdf1..d5852e7 100644
--- a/events/client.go
+++ b/events/client.go
@@ -4,7 +4,7 @@
 	"bytes"
 	"encoding/json"
 	// "errors"
-	// "fmt"
+	"fmt"
 	"io/ioutil"
 	"net/http"
 
@@ -34,6 +34,19 @@
   }
 }`
 
+var markEventDoneTmpl = `mutation {
+  updateImageEvent(input: {
+    filter: {
+      id: ["%s"]
+    },
+    set: {
+      state: DONE
+    }
+  }) {
+    numUids
+  }
+}`
+
 // Implements EventStore
 type GraphQLClient struct {
 	apiAddr string
@@ -101,3 +114,17 @@
 	}
 	return events, nil
 }
+
+func (c *GraphQLClient) MarkEventDone(event Event) error {
+	q := query{fmt.Sprintf(markEventDoneTmpl, event.Id)}
+	qJson, err := json.Marshal(q)
+	if err != nil {
+		return err
+	}
+	_, err = http.Post(c.apiAddr, jsonContentType, bytes.NewReader(qJson))
+	if err != nil {
+		return err
+	}
+	// TODO(giolekva): check errors field
+	return nil
+}
diff --git a/events/event.go b/events/event.go
index 427427b..b17fab0 100644
--- a/events/event.go
+++ b/events/event.go
@@ -2,6 +2,7 @@
 
 type EventState string
 
+// TODO(giolekva): add FAILED
 const (
 	EventStateNew        EventState = "NEW"
 	EventStateProcessing EventState = "PROCESSING"
@@ -16,4 +17,5 @@
 
 type EventStore interface {
 	GetEventsInState(state EventState) ([]Event, error)
+	MarkEventDone(event Event) error
 }
diff --git a/events/processor.go b/events/processor.go
index 3d4079c..89db4d5 100644
--- a/events/processor.go
+++ b/events/processor.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"fmt"
+	"time"
 
 	apiv1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -18,9 +19,10 @@
 
 // Implements processor
 type singleEventAtATimeProcessor struct {
-	store          EventStore
-	pods           corev1.PodInterface
-	pcloudApi      string
+	store     EventStore
+	pods      corev1.PodInterface
+	pcloudApi string
+	// TODO(giolekva): Nodes themselves should be associated with object store
 	objectStoreApi string
 }
 
@@ -33,22 +35,29 @@
 
 func (p *singleEventAtATimeProcessor) Start() {
 	for {
-		events, err := p.store.GetEventsInState(EventStateNew)
-		if err != nil {
-			glog.Error(err)
-			continue
+		select {
+		case <-time.After(30 * time.Second):
+			events, err := p.store.GetEventsInState(EventStateNew)
+			if err != nil {
+				glog.Error(err)
+				continue
+			}
+			if len(events) == 0 {
+				continue
+			}
+			event := events[0]
+			pod := createPod(event.NodeId, p.pcloudApi, p.objectStoreApi)
+			glog.Info("Creating pod...")
+			resp, err := p.pods.Create(context.TODO(), pod, metav1.CreateOptions{})
+			if err != nil {
+				glog.Error(resp)
+				continue
+			}
+			glog.Infof("Pod created: %s", resp)
+			// TODO(giolekva): do not ignore error
+			_ = monitorPod(resp, p.pods)
+			p.store.MarkEventDone(event)
 		}
-		pod := createPod(events[0].NodeId, p.pcloudApi, p.objectStoreApi)
-		glog.Info("Creating pod...")
-		resp, err := p.pods.Create(context.TODO(), pod, metav1.CreateOptions{})
-		if err != nil {
-			glog.Error(resp)
-			continue
-		}
-		glog.Infof("Pod created: %s", resp)
-		// TODO(giolekva): do not ignore error
-		_ = monitorPod(resp, p.pods)
-		break
 	}
 }
 
@@ -69,8 +78,9 @@
 				return nil
 			}
 			p := events.Object.(*apiv1.Pod)
-			fmt.Println("Pod status:", pod.Status.Phase)
+			glog.Infof("Pod status: %s", pod.Status.Phase)
 			if isInTerminalState(p) {
+				glog.Info("Pod is DONE")
 				w.Stop()
 			}
 		}
@@ -88,6 +98,6 @@
 				Name:            "event",
 				Image:           "giolekva/face-detector:latest",
 				ImagePullPolicy: apiv1.PullAlways,
-				Command:         []string{"python", "main.py"},
+				Command:         []string{"python3", "main.py"},
 				Args:            []string{pcloudApi, objectStoreApi, id}}}}}
 }
