diff --git a/main.go b/main.go
index 7de198146832a9b8dfc37c22bce1d4d10e5adfa8..46092ff3fcacc9b682df9e5bf7b9951e9ac1ca38 100644
--- a/main.go
+++ b/main.go
@@ -133,33 +133,19 @@ func main() {
 			log.Fatal(err)
 			return
 		}
-
-		if err = returnJson(w, timetable); err != nil {
+		var realtime bahn.Timetable
+		if realtime, err = apiClient.RealtimeAll(evaId, date); err != nil {
 			log.Fatal(err)
 			return
 		}
-	})
-	http.HandleFunc("/realtime/", func(w http.ResponseWriter, r *http.Request) {
-		var err error
-
-		_, rawEvaId := path.Split(r.URL.Path)
-		rawEvaId = strings.TrimSpace(rawEvaId)
-
-		var evaId int64
-		if evaId, err = strconv.ParseInt(rawEvaId, 10, 64); err != nil {
-			log.Fatal(err)
-			return
-		}
-
-		var date time.Time
-		if date, err = time.Parse(time.RFC3339, strings.TrimSpace(r.FormValue("time"))); err != nil {
-			date = time.Now()
+		realtimeData := make(map[string]*bahn.TimetableStop)
+		for i := range realtime.Stops {
+			stop := realtime.Stops[i]
+			realtimeData[stop.StopId] = &stop
 		}
-
-		var timetable bahn.Timetable
-		if timetable, err = apiClient.RealtimeAll(evaId, date); err != nil {
-			log.Fatal(err)
-			return
+		for i := range timetable.Stops {
+			stop := &timetable.Stops[i]
+			MergeTimetableStop(stop, realtimeData[stop.StopId])
 		}
 
 		if err = returnJson(w, timetable); err != nil {
diff --git a/merge.go b/merge.go
new file mode 100644
index 0000000000000000000000000000000000000000..d185c193bf6918c35fee0c5e751eb873fc396020
--- /dev/null
+++ b/merge.go
@@ -0,0 +1,41 @@
+package main
+
+import (
+	"git.kuschku.de/justjanne/bahn-api"
+)
+
+func MergeTimetableStop(data *bahn.TimetableStop, realtime *bahn.TimetableStop) {
+	if data == nil || realtime == nil {
+		return
+	}
+
+	data.Messages = realtime.Messages
+	MergeTripLabel(&data.TripLabel, &realtime.TripLabel)
+	MergeTimetableStop(data.Ref, realtime.Ref)
+	MergeEvent(data.Arrival, realtime.Arrival)
+	MergeEvent(data.Departure, realtime.Departure)
+	data.HistoricDelays = realtime.HistoricDelays
+	data.HistoricPlatformChanges = realtime.HistoricPlatformChanges
+	data.Connections = realtime.Connections
+}
+
+func MergeTripLabel(data *bahn.TripLabel, realtime *bahn.TripLabel) {
+	if data == nil || realtime == nil {
+		return
+	}
+
+	data.Messages = realtime.Messages
+}
+
+func MergeEvent(data *bahn.Event, realtime *bahn.Event) {
+	if data == nil || realtime == nil {
+		return
+	}
+
+	data.Messages = realtime.Messages
+	data.ChangedPlatform = realtime.ChangedPlatform
+	data.ChangedTime = realtime.ChangedTime
+	data.ChangedPath = realtime.ChangedPath
+	data.ChangedDestination = realtime.ChangedDestination
+	data.ChangedStatus = realtime.ChangedStatus
+}