diff --git a/client.go b/client.go
index 7ece9dc07a3f2e48f9982d799a9866401ce71792..4f61ddde63d034ca50806bf02b48e14b2332e1ab 100644
--- a/client.go
+++ b/client.go
@@ -22,32 +22,11 @@ type ApiClient struct {
 
 const cacheTimestamp = "2006-01-02T15:04"
 
-func (c *ApiClient) loadWithCache(key string, result interface{}, load func() (interface{}, error)) error {
-	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
-			for _, targetCache := range c.Caches {
-				if targetCache == cache {
-					break
-				}
-				_ = targetCache.Set(key, result)
-			}
-			return nil
-		}
-	}
-	var err error
-	if result, err = load(); err == nil {
-		for _, cache := range c.Caches {
-			_ = cache.Set(key, result)
-		}
-	}
-	return err
-}
-
 func (c *ApiClient) Station(evaId int64) ([]Station, error) {
 	key := fmt.Sprintf("realtime_recent %d", evaId)
 	var result []Station
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -94,7 +73,7 @@ func (c *ApiClient) Timetable(evaId int64, date time.Time) (Timetable, error) {
 
 	var result Timetable
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -142,7 +121,7 @@ func (c *ApiClient) RealtimeAll(evaId int64, date time.Time) (Timetable, error)
 
 	var result Timetable
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -189,7 +168,7 @@ func (c *ApiClient) RealtimeRecent(evaId int64, date time.Time) (Timetable, erro
 
 	var result Timetable
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -236,7 +215,7 @@ func (c *ApiClient) WingDefinition(parent string, wing string) (WingDefinition,
 
 	var result WingDefinition
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -283,7 +262,7 @@ func (c *ApiClient) CoachSequence(line string, date time.Time) (CoachSequence, e
 
 	var result CoachSequence
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -330,7 +309,7 @@ func (c *ApiClient) Suggestions(line string, date time.Time) ([]Suggestion, erro
 
 	var result []Suggestion
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break
@@ -398,7 +377,7 @@ func (c *ApiClient) HafasMessages(trainlink string) ([]HafasMessage, error) {
 
 	var result []HafasMessage
 	for _, cache := range c.Caches {
-		if err := cache.Get(key, result); err == nil {
+		if err := cache.Get(key, &result); err == nil {
 			for _, targetCache := range c.Caches {
 				if targetCache == cache {
 					break