diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 0a09baef7d24283a3d8c954208e0ce6de322b7fd..e052cdae3c71022d9213d877cf8042b6883c0b8d 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -27,6 +27,6 @@ swarm/services                  @zelig
 swarm/state                     @justelad
 swarm/storage/encryption        @gbalint @zelig @nagydani
 swarm/storage/mock              @janos
-swarm/storage/mru               @nolash
+swarm/storage/feeds             @nolash
 swarm/testutil                  @lmars
 whisper/                        @gballet @gluk256
diff --git a/cmd/swarm/mru.go b/cmd/swarm/feeds.go
similarity index 86%
rename from cmd/swarm/mru.go
rename to cmd/swarm/feeds.go
index 6c6d44c0ae5ab1a313a0cc4c633dc481b88d6993..b7b513556a2670cef5d56a855d4010257e1d8cd7 100644
--- a/cmd/swarm/mru.go
+++ b/cmd/swarm/feeds.go
@@ -27,15 +27,15 @@ import (
 
 	"github.com/ethereum/go-ethereum/cmd/utils"
 	swarm "github.com/ethereum/go-ethereum/swarm/api/client"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 	"gopkg.in/urfave/cli.v1"
 )
 
-func NewGenericSigner(ctx *cli.Context) mru.Signer {
-	return mru.NewGenericSigner(getPrivKey(ctx))
+func NewGenericSigner(ctx *cli.Context) feeds.Signer {
+	return feeds.NewGenericSigner(getPrivKey(ctx))
 }
 
-func getTopic(ctx *cli.Context) (topic mru.Topic) {
+func getTopic(ctx *cli.Context) (topic feeds.Topic) {
 	var name = ctx.String(SwarmFeedNameFlag.Name)
 	var relatedTopic = ctx.String(SwarmFeedTopicFlag.Name)
 	var relatedTopicBytes []byte
@@ -48,7 +48,7 @@ func getTopic(ctx *cli.Context) (topic mru.Topic) {
 		}
 	}
 
-	topic, err = mru.NewTopic(name, relatedTopicBytes)
+	topic, err = feeds.NewTopic(name, relatedTopicBytes)
 	if err != nil {
 		utils.Fatalf("Error parsing topic: %s", err)
 	}
@@ -65,7 +65,7 @@ func feedCreateManifest(ctx *cli.Context) {
 		client = swarm.NewClient(bzzapi)
 	)
 
-	newFeedUpdateRequest := mru.NewFirstRequest(getTopic(ctx))
+	newFeedUpdateRequest := feeds.NewFirstRequest(getTopic(ctx))
 	newFeedUpdateRequest.Feed.User = feedGetUser(ctx)
 
 	manifestAddress, err := client.CreateFeedWithManifest(newFeedUpdateRequest)
@@ -100,18 +100,18 @@ func feedUpdate(ctx *cli.Context) {
 		return
 	}
 
-	var updateRequest *mru.Request
-	var query *mru.Query
+	var updateRequest *feeds.Request
+	var query *feeds.Query
 
 	if manifestAddressOrDomain == "" {
-		query = new(mru.Query)
+		query = new(feeds.Query)
 		query.User = signer.Address()
 		query.Topic = getTopic(ctx)
 
 	}
 
-	// Retrieve feed status and metadata out of the manifest
-	updateRequest, err = client.GetFeedMetadata(query, manifestAddressOrDomain)
+	// Retrieve a feed update request
+	updateRequest, err = client.GetFeedRequest(query, manifestAddressOrDomain)
 	if err != nil {
 		utils.Fatalf("Error retrieving feed status: %s", err.Error())
 	}
@@ -139,14 +139,14 @@ func feedInfo(ctx *cli.Context) {
 		manifestAddressOrDomain = ctx.String(SwarmFeedManifestFlag.Name)
 	)
 
-	var query *mru.Query
+	var query *feeds.Query
 	if manifestAddressOrDomain == "" {
-		query = new(mru.Query)
+		query = new(feeds.Query)
 		query.Topic = getTopic(ctx)
 		query.User = feedGetUser(ctx)
 	}
 
-	metadata, err := client.GetFeedMetadata(query, manifestAddressOrDomain)
+	metadata, err := client.GetFeedRequest(query, manifestAddressOrDomain)
 	if err != nil {
 		utils.Fatalf("Error retrieving feed metadata: %s", err.Error())
 		return
diff --git a/cmd/swarm/mru_test.go b/cmd/swarm/feeds_test.go
similarity index 94%
rename from cmd/swarm/mru_test.go
rename to cmd/swarm/feeds_test.go
index c0c43aca40f8f695d9eb0589bcbc696359a6a6ae..a403f8fe4bf13a6ba0eec1861be8924025042493 100644
--- a/cmd/swarm/mru_test.go
+++ b/cmd/swarm/feeds_test.go
@@ -26,11 +26,11 @@ import (
 	"testing"
 
 	"github.com/ethereum/go-ethereum/swarm/api"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 	"github.com/ethereum/go-ethereum/swarm/testutil"
 
 	"github.com/ethereum/go-ethereum/crypto"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 
 	"github.com/ethereum/go-ethereum/common/hexutil"
 	"github.com/ethereum/go-ethereum/log"
@@ -65,7 +65,7 @@ func TestCLIFeedUpdate(t *testing.T) {
 	}
 
 	// compose a topic. We'll be doing quotes about Miguel de Cervantes
-	var topic mru.Topic
+	var topic feeds.Topic
 	subject := []byte("Miguel de Cervantes")
 	copy(topic[:], subject[:])
 	name := "quotes"
@@ -95,19 +95,19 @@ func TestCLIFeedUpdate(t *testing.T) {
 
 	// build the same topic as before, this time
 	// we use NewTopic to create a topic automatically.
-	topic, err = mru.NewTopic(name, subject)
+	topic, err = feeds.NewTopic(name, subject)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	// Feed configures whose updates we will be looking up.
-	feed := mru.Feed{
+	feed := feeds.Feed{
 		Topic: topic,
 		User:  address,
 	}
 
 	// Build a query to get the latest update
-	query := mru.NewQueryLatest(&feed, lookup.NoClue)
+	query := feeds.NewQueryLatest(&feed, lookup.NoClue)
 
 	// retrieve content!
 	reader, err := client.QueryFeed(query, "")
@@ -139,7 +139,7 @@ func TestCLIFeedUpdate(t *testing.T) {
 	cmd.ExpectExit()
 
 	// verify we can deserialize the result as a valid JSON
-	var request mru.Request
+	var request feeds.Request
 	err = json.Unmarshal([]byte(matches[0]), &request)
 	if err != nil {
 		t.Fatal(err)
diff --git a/swarm/OWNERS b/swarm/OWNERS
index 774cd7db9de507b3d54f043b6dd0435db60e1a3b..4681ed5ef829ed6851e85fe6c7d4e4395ef700bc 100644
--- a/swarm/OWNERS
+++ b/swarm/OWNERS
@@ -22,5 +22,5 @@ swarm
 ├── storage ─────────────── ethersphere
 │   ├── encryption ──────── @gbalint, @zelig, @nagydani
 │   ├── mock ────────────── @janos
-│   └── mru ─────────────── @nolash
+│   └── feeds ───────────── @nolash
 └── testutil ────────────── @lmars
\ No newline at end of file
diff --git a/swarm/api/api.go b/swarm/api/api.go
index 9b4571bee1050d9dc25525ab7c8c4be7904c3b98..c61bd8064313d39c1b2205b28f4dc59c7ecc77a2 100644
--- a/swarm/api/api.go
+++ b/swarm/api/api.go
@@ -45,9 +45,10 @@ import (
 	"github.com/ethereum/go-ethereum/swarm/multihash"
 	"github.com/ethereum/go-ethereum/swarm/spancontext"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
-	"github.com/opentracing/opentracing-go"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
+
+	opentracing "github.com/opentracing/opentracing-go"
 )
 
 var (
@@ -235,14 +236,14 @@ on top of the FileStore
 it is the public interface of the FileStore which is included in the ethereum stack
 */
 type API struct {
-	feeds     *mru.Handler
+	feeds     *feeds.Handler
 	fileStore *storage.FileStore
 	dns       Resolver
 	Decryptor func(context.Context, string) DecryptFunc
 }
 
 // NewAPI the api constructor initialises a new API instance.
-func NewAPI(fileStore *storage.FileStore, dns Resolver, feedsHandler *mru.Handler, pk *ecdsa.PrivateKey) (self *API) {
+func NewAPI(fileStore *storage.FileStore, dns Resolver, feedsHandler *feeds.Handler, pk *ecdsa.PrivateKey) (self *API) {
 	self = &API{
 		fileStore: fileStore,
 		dns:       dns,
@@ -408,7 +409,7 @@ func (a *API) Get(ctx context.Context, decrypt DecryptFunc, manifestAddr storage
 			if entry.Feed == nil {
 				return reader, mimeType, status, nil, fmt.Errorf("Cannot decode Feed in manifest")
 			}
-			_, err := a.feeds.Lookup(ctx, mru.NewQueryLatest(entry.Feed, lookup.NoClue))
+			_, err := a.feeds.Lookup(ctx, feeds.NewQueryLatest(entry.Feed, lookup.NoClue))
 			if err != nil {
 				apiGetNotFound.Inc(1)
 				status = http.StatusNotFound
@@ -957,7 +958,7 @@ func (a *API) BuildDirectoryTree(ctx context.Context, mhash string, nameresolver
 }
 
 // FeedsLookup finds Swarm Feeds Updates at specific points in time, or the latest update
-func (a *API) FeedsLookup(ctx context.Context, query *mru.Query) ([]byte, error) {
+func (a *API) FeedsLookup(ctx context.Context, query *feeds.Query) ([]byte, error) {
 	_, err := a.feeds.Lookup(ctx, query)
 	if err != nil {
 		return nil, err
@@ -971,12 +972,12 @@ func (a *API) FeedsLookup(ctx context.Context, query *mru.Query) ([]byte, error)
 }
 
 // FeedsNewRequest creates a Request object to update a specific Feed
-func (a *API) FeedsNewRequest(ctx context.Context, feed *mru.Feed) (*mru.Request, error) {
+func (a *API) FeedsNewRequest(ctx context.Context, feed *feeds.Feed) (*feeds.Request, error) {
 	return a.feeds.NewRequest(ctx, feed)
 }
 
 // FeedsUpdate publishes a new update on the given Feed
-func (a *API) FeedsUpdate(ctx context.Context, request *mru.Request) (storage.Address, error) {
+func (a *API) FeedsUpdate(ctx context.Context, request *feeds.Request) (storage.Address, error) {
 	return a.feeds.Update(ctx, request)
 }
 
@@ -992,7 +993,7 @@ var ErrCannotLoadFeedManifest = errors.New("Cannot load feed manifest")
 var ErrNotAFeedManifest = errors.New("Not a feed manifest")
 
 // ResolveFeedManifest retrieves the Feed manifest for the given address, and returns the referenced Feed.
-func (a *API) ResolveFeedManifest(ctx context.Context, addr storage.Address) (*mru.Feed, error) {
+func (a *API) ResolveFeedManifest(ctx context.Context, addr storage.Address) (*feeds.Feed, error) {
 	trie, err := loadManifest(ctx, a.fileStore, addr, nil, NOOPDecrypt)
 	if err != nil {
 		return nil, ErrCannotLoadFeedManifest
@@ -1015,8 +1016,8 @@ var ErrCannotResolveFeed = errors.New("Cannot resolve Feed")
 
 // ResolveFeed attempts to extract Feed information out of the manifest, if provided
 // If not, it attempts to extract the Feed out of a set of key-value pairs
-func (a *API) ResolveFeed(ctx context.Context, uri *URI, values mru.Values) (*mru.Feed, error) {
-	var feed *mru.Feed
+func (a *API) ResolveFeed(ctx context.Context, uri *URI, values feeds.Values) (*feeds.Feed, error) {
+	var feed *feeds.Feed
 	var err error
 	if uri.Addr != "" {
 		// resolve the content key.
@@ -1035,7 +1036,7 @@ func (a *API) ResolveFeed(ctx context.Context, uri *URI, values mru.Values) (*mr
 		}
 		log.Debug("handle.get.feed: resolved", "manifestkey", manifestAddr, "feed", feed.Hex())
 	} else {
-		var v mru.Feed
+		var v feeds.Feed
 		if err := v.FromValues(values); err != nil {
 			return nil, ErrCannotResolveFeed
 
diff --git a/swarm/api/client/client.go b/swarm/api/client/client.go
index 76ada129770474472db132100ddd05c3368fcf6b..6b4614581a8f6c7b3763ab002070b001640f917c 100644
--- a/swarm/api/client/client.go
+++ b/swarm/api/client/client.go
@@ -35,7 +35,7 @@ import (
 	"strings"
 
 	"github.com/ethereum/go-ethereum/swarm/api"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 )
 
 var (
@@ -608,7 +608,7 @@ var ErrNoFeedUpdatesFound = errors.New("No updates found for this feed")
 // data
 // Returns the resulting Feed Manifest address that you can use to include in an ENS Resolver (setContent)
 // or reference future updates (Client.UpdateFeed)
-func (c *Client) CreateFeedWithManifest(request *mru.Request) (string, error) {
+func (c *Client) CreateFeedWithManifest(request *feeds.Request) (string, error) {
 	responseStream, err := c.updateFeed(request, true)
 	if err != nil {
 		return "", err
@@ -628,12 +628,12 @@ func (c *Client) CreateFeedWithManifest(request *mru.Request) (string, error) {
 }
 
 // UpdateFeed allows you to set a new version of your content
-func (c *Client) UpdateFeed(request *mru.Request) error {
+func (c *Client) UpdateFeed(request *feeds.Request) error {
 	_, err := c.updateFeed(request, false)
 	return err
 }
 
-func (c *Client) updateFeed(request *mru.Request, createManifest bool) (io.ReadCloser, error) {
+func (c *Client) updateFeed(request *feeds.Request, createManifest bool) (io.ReadCloser, error) {
 	URL, err := url.Parse(c.Gateway)
 	if err != nil {
 		return nil, err
@@ -662,7 +662,7 @@ func (c *Client) updateFeed(request *mru.Request, createManifest bool) (io.ReadC
 // QueryFeed returns a byte stream with the raw content of the feed update
 // manifestAddressOrDomain is the address you obtained in CreateFeedWithManifest or an ENS domain whose Resolver
 // points to that address
-func (c *Client) QueryFeed(query *mru.Query, manifestAddressOrDomain string) (io.ReadCloser, error) {
+func (c *Client) QueryFeed(query *feeds.Query, manifestAddressOrDomain string) (io.ReadCloser, error) {
 	return c.queryFeed(query, manifestAddressOrDomain, false)
 }
 
@@ -670,7 +670,7 @@ func (c *Client) QueryFeed(query *mru.Query, manifestAddressOrDomain string) (io
 // manifestAddressOrDomain is the address you obtained in CreateFeedWithManifest or an ENS domain whose Resolver
 // points to that address
 // meta set to true will instruct the node return Feed metainformation instead
-func (c *Client) queryFeed(query *mru.Query, manifestAddressOrDomain string, meta bool) (io.ReadCloser, error) {
+func (c *Client) queryFeed(query *feeds.Query, manifestAddressOrDomain string, meta bool) (io.ReadCloser, error) {
 	URL, err := url.Parse(c.Gateway)
 	if err != nil {
 		return nil, err
@@ -706,10 +706,10 @@ func (c *Client) queryFeed(query *mru.Query, manifestAddressOrDomain string, met
 	return res.Body, nil
 }
 
-// GetFeedMetadata returns a structure that describes the referenced Feed status
+// GetFeedRequest returns a structure that describes the referenced Feed status
 // manifestAddressOrDomain is the address you obtained in CreateFeedWithManifest or an ENS domain whose Resolver
 // points to that address
-func (c *Client) GetFeedMetadata(query *mru.Query, manifestAddressOrDomain string) (*mru.Request, error) {
+func (c *Client) GetFeedRequest(query *feeds.Query, manifestAddressOrDomain string) (*feeds.Request, error) {
 
 	responseStream, err := c.queryFeed(query, manifestAddressOrDomain, true)
 	if err != nil {
@@ -722,7 +722,7 @@ func (c *Client) GetFeedMetadata(query *mru.Query, manifestAddressOrDomain strin
 		return nil, err
 	}
 
-	var metadata mru.Request
+	var metadata feeds.Request
 	if err := metadata.UnmarshalJSON(body); err != nil {
 		return nil, err
 	}
diff --git a/swarm/api/client/client_test.go b/swarm/api/client/client_test.go
index fbc49a6e1718ea44113fb0161d801f7713bffbce..4fad7fbc71bdaa41caa2baea80917dd716ed0a09 100644
--- a/swarm/api/client/client_test.go
+++ b/swarm/api/client/client_test.go
@@ -25,14 +25,14 @@ import (
 	"sort"
 	"testing"
 
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/crypto"
 	"github.com/ethereum/go-ethereum/swarm/api"
 	swarmhttp "github.com/ethereum/go-ethereum/swarm/api/http"
 	"github.com/ethereum/go-ethereum/swarm/multihash"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 	"github.com/ethereum/go-ethereum/swarm/testutil"
 )
 
@@ -361,12 +361,12 @@ func TestClientMultipartUpload(t *testing.T) {
 	}
 }
 
-func newTestSigner() (*mru.GenericSigner, error) {
+func newTestSigner() (*feeds.GenericSigner, error) {
 	privKey, err := crypto.HexToECDSA("deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef")
 	if err != nil {
 		return nil, err
 	}
-	return mru.NewGenericSigner(privKey), nil
+	return feeds.NewGenericSigner(privKey), nil
 }
 
 // test the transparent resolving of multihash feed updates with bzz:// scheme
@@ -394,9 +394,9 @@ func TestClientCreateFeedMultihash(t *testing.T) {
 	mh := multihash.ToMultihash(s)
 
 	// our feed topic
-	topic, _ := mru.NewTopic("foo.eth", nil)
+	topic, _ := feeds.NewTopic("foo.eth", nil)
 
-	createRequest := mru.NewFirstRequest(topic)
+	createRequest := feeds.NewFirstRequest(topic)
 
 	createRequest.SetData(mh)
 	if err := createRequest.Sign(signer); err != nil {
@@ -448,8 +448,8 @@ func TestClientCreateUpdateFeed(t *testing.T) {
 	databytes := []byte("En un lugar de La Mancha, de cuyo nombre no quiero acordarme...")
 
 	// our feed topic name
-	topic, _ := mru.NewTopic("El Quijote", nil)
-	createRequest := mru.NewFirstRequest(topic)
+	topic, _ := feeds.NewTopic("El Quijote", nil)
+	createRequest := feeds.NewFirstRequest(topic)
 
 	createRequest.SetData(databytes)
 	if err := createRequest.Sign(signer); err != nil {
@@ -479,7 +479,7 @@ func TestClientCreateUpdateFeed(t *testing.T) {
 	// define different data
 	databytes = []byte("... no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero ...")
 
-	updateRequest, err := client.GetFeedMetadata(nil, correctManifestAddrHex)
+	updateRequest, err := client.GetFeedRequest(nil, correctManifestAddrHex)
 	if err != nil {
 		t.Fatalf("Error retrieving update request template: %s", err)
 	}
@@ -508,12 +508,12 @@ func TestClientCreateUpdateFeed(t *testing.T) {
 
 	// now try retrieving feed updates without a manifest
 
-	feed := &mru.Feed{
+	feed := &feeds.Feed{
 		Topic: topic,
 		User:  signer.Address(),
 	}
 
-	lookupParams := mru.NewQueryLatest(feed, lookup.NoClue)
+	lookupParams := feeds.NewQueryLatest(feed, lookup.NoClue)
 	reader, err = client.QueryFeed(lookupParams, "")
 	if err != nil {
 		t.Fatalf("Error retrieving feed updates: %s", err)
diff --git a/swarm/api/http/server.go b/swarm/api/http/server.go
index c5b3b564c75b9d489788dad8a749386297a8ab96..84e06d09fe60ff1d0f97ec2c31a518100f5783e9 100644
--- a/swarm/api/http/server.go
+++ b/swarm/api/http/server.go
@@ -40,7 +40,7 @@ import (
 	"github.com/ethereum/go-ethereum/swarm/api"
 	"github.com/ethereum/go-ethereum/swarm/log"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 
 	"github.com/rs/cors"
 )
@@ -466,7 +466,7 @@ func (s *Server) HandlePostFeed(w http.ResponseWriter, r *http.Request) {
 	log.Debug("handle.post.feed", "ruid", ruid)
 	var err error
 
-	// Creation and update must send mru.updateRequestJSON JSON structure
+	// Creation and update must send feeds.updateRequestJSON JSON structure
 	body, err := ioutil.ReadAll(r.Body)
 	if err != nil {
 		RespondError(w, r, err.Error(), http.StatusInternalServerError)
@@ -484,7 +484,7 @@ func (s *Server) HandlePostFeed(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	var updateRequest mru.Request
+	var updateRequest feeds.Request
 	updateRequest.Feed = *feed
 	query := r.URL.Query()
 
@@ -582,7 +582,7 @@ func (s *Server) HandleGetFeed(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	lookupParams := &mru.Query{Feed: *feed}
+	lookupParams := &feeds.Query{Feed: *feed}
 	if err = lookupParams.FromValues(r.URL.Query()); err != nil { // parse period, version
 		RespondError(w, r, fmt.Sprintf("invalid feed update request:%s", err), http.StatusBadRequest)
 		return
@@ -606,7 +606,7 @@ func (s *Server) HandleGetFeed(w http.ResponseWriter, r *http.Request) {
 func (s *Server) translateFeedError(w http.ResponseWriter, r *http.Request, supErr string, err error) (int, error) {
 	code := 0
 	defaultErr := fmt.Errorf("%s: %v", supErr, err)
-	rsrcErr, ok := err.(*mru.Error)
+	rsrcErr, ok := err.(*feeds.Error)
 	if !ok && rsrcErr != nil {
 		code = rsrcErr.Code()
 	}
diff --git a/swarm/api/http/server_test.go b/swarm/api/http/server_test.go
index a7c7e300314551e23a47dc9eb10bf236683ea5dd..16813cab558312f067c0f023b3377cd924d2ab46 100644
--- a/swarm/api/http/server_test.go
+++ b/swarm/api/http/server_test.go
@@ -38,7 +38,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/core/types"
@@ -48,7 +48,7 @@ import (
 	swarm "github.com/ethereum/go-ethereum/swarm/api/client"
 	"github.com/ethereum/go-ethereum/swarm/multihash"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 	"github.com/ethereum/go-ethereum/swarm/testutil"
 )
 
@@ -62,12 +62,12 @@ func serverFunc(api *api.API) testutil.TestServer {
 	return NewServer(api, "")
 }
 
-func newTestSigner() (*mru.GenericSigner, error) {
+func newTestSigner() (*feeds.GenericSigner, error) {
 	privKey, err := crypto.HexToECDSA("deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef")
 	if err != nil {
 		return nil, err
 	}
-	return mru.NewGenericSigner(privKey), nil
+	return feeds.NewGenericSigner(privKey), nil
 }
 
 // test the transparent resolving of multihash-containing feed updates with bzz:// scheme
@@ -103,8 +103,8 @@ func TestBzzFeedMultihash(t *testing.T) {
 
 	log.Info("added data", "manifest", string(b), "data", common.ToHex(mh))
 
-	topic, _ := mru.NewTopic("foo.eth", nil)
-	updateRequest := mru.NewFirstRequest(topic)
+	topic, _ := feeds.NewTopic("foo.eth", nil)
+	updateRequest := feeds.NewFirstRequest(topic)
 
 	updateRequest.SetData(mh)
 
@@ -182,8 +182,8 @@ func TestBzzFeed(t *testing.T) {
 	//data for update 2
 	update2Data := []byte("foo")
 
-	topic, _ := mru.NewTopic("foo.eth", nil)
-	updateRequest := mru.NewFirstRequest(topic)
+	topic, _ := feeds.NewTopic("foo.eth", nil)
+	updateRequest := feeds.NewFirstRequest(topic)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -319,7 +319,7 @@ func TestBzzFeed(t *testing.T) {
 	if err != nil {
 		t.Fatal(err)
 	}
-	updateRequest = &mru.Request{}
+	updateRequest = &feeds.Request{}
 	if err = updateRequest.UnmarshalJSON(b); err != nil {
 		t.Fatalf("Error decoding feed metadata: %s", err)
 	}
@@ -365,7 +365,7 @@ func TestBzzFeed(t *testing.T) {
 
 	// test manifest-less queries
 	log.Info("get first update in update1Timestamp via direct query")
-	query := mru.NewQuery(&updateRequest.Feed, update1Timestamp, lookup.NoClue)
+	query := feeds.NewQuery(&updateRequest.Feed, update1Timestamp, lookup.NoClue)
 
 	urlq, err := url.Parse(fmt.Sprintf("%s/bzz-feed:/", srv.URL))
 	if err != nil {
diff --git a/swarm/api/manifest.go b/swarm/api/manifest.go
index f41a823bd9cf39ad4401ec33b06fe35a8ccf9f5e..9ac3214a53c9b21e61050eb9ac5364b2b921dc4e 100644
--- a/swarm/api/manifest.go
+++ b/swarm/api/manifest.go
@@ -27,7 +27,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/swarm/log"
@@ -56,7 +56,7 @@ type ManifestEntry struct {
 	ModTime     time.Time    `json:"mod_time,omitempty"`
 	Status      int          `json:"status,omitempty"`
 	Access      *AccessEntry `json:"access,omitempty"`
-	Feed        *mru.Feed    `json:"feed,omitempty"`
+	Feed        *feeds.Feed  `json:"feed,omitempty"`
 }
 
 // ManifestList represents the result of listing files in a manifest
@@ -82,7 +82,7 @@ func (a *API) NewManifest(ctx context.Context, toEncrypt bool) (storage.Address,
 
 // Manifest hack for supporting Feeds from the bzz: scheme
 // see swarm/api/api.go:API.Get() for more information
-func (a *API) NewFeedManifest(ctx context.Context, feed *mru.Feed) (storage.Address, error) {
+func (a *API) NewFeedManifest(ctx context.Context, feed *feeds.Feed) (storage.Address, error) {
 	var manifest Manifest
 	entry := ManifestEntry{
 		Feed:        feed,
diff --git a/swarm/pss/notify/notify.go b/swarm/pss/notify/notify.go
index 723092c32d2bd7d0da15078718fe65a7575d12b3..01ecb4ff9cc1c41c10d74fbfee5eb933390558fe 100644
--- a/swarm/pss/notify/notify.go
+++ b/swarm/pss/notify/notify.go
@@ -317,7 +317,7 @@ func (c *Controller) handleStartMsg(msg *Msg, keyid string) (err error) {
 		return err
 	}
 
-	// TODO this is set to zero-length byte pending decision on protocol for initial message, whether it should include message or not, and how to trigger the initial message so that current state of MRU is sent upon subscription
+	// TODO this is set to zero-length byte pending decision on protocol for initial message, whether it should include message or not, and how to trigger the initial message so that current state of Swarm Feed is sent upon subscription
 	notify := []byte{}
 	replyMsg := NewMsg(MsgCodeNotifyWithKey, msg.namestring, make([]byte, len(notify)+symKeyLength))
 	copy(replyMsg.Payload, notify)
diff --git a/swarm/storage/mru/binaryserializer.go b/swarm/storage/feeds/binaryserializer.go
similarity index 99%
rename from swarm/storage/mru/binaryserializer.go
rename to swarm/storage/feeds/binaryserializer.go
index 3123a82eea811f04572f4d8968e83161d1cbd660..ce146571bf28fa8ebd28ba61c8702572cbf0b78b 100644
--- a/swarm/storage/mru/binaryserializer.go
+++ b/swarm/storage/feeds/binaryserializer.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import "github.com/ethereum/go-ethereum/common/hexutil"
 
diff --git a/swarm/storage/mru/binaryserializer_test.go b/swarm/storage/feeds/binaryserializer_test.go
similarity index 99%
rename from swarm/storage/mru/binaryserializer_test.go
rename to swarm/storage/feeds/binaryserializer_test.go
index f524157d611b5a435641db508443d1155965789a..0c81e7f18a6ad95013c85c52df5acce7df130801 100644
--- a/swarm/storage/mru/binaryserializer_test.go
+++ b/swarm/storage/feeds/binaryserializer_test.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"encoding/json"
diff --git a/swarm/storage/mru/cacheentry.go b/swarm/storage/feeds/cacheentry.go
similarity index 99%
rename from swarm/storage/mru/cacheentry.go
rename to swarm/storage/feeds/cacheentry.go
index f6ed72818ffff674f08c4ccaf0e3c3115fc246d8..7a2f87b56407f59b9cdcd5054b8a964b46c8f802 100644
--- a/swarm/storage/mru/cacheentry.go
+++ b/swarm/storage/feeds/cacheentry.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"bytes"
diff --git a/swarm/storage/mru/doc.go b/swarm/storage/feeds/doc.go
similarity index 99%
rename from swarm/storage/mru/doc.go
rename to swarm/storage/feeds/doc.go
index 7ffd4a3c6ba2fc4ea864e62806aafdb5313364f2..d1edf5d6d1621d1a9201c5fb0b2bfd6663130282 100644
--- a/swarm/storage/mru/doc.go
+++ b/swarm/storage/feeds/doc.go
@@ -40,4 +40,4 @@ Request: Feed Update with signature
 			Epoch: time slot where the update is stored
 
 */
-package mru
+package feeds
diff --git a/swarm/storage/mru/error.go b/swarm/storage/feeds/error.go
similarity index 95%
rename from swarm/storage/mru/error.go
rename to swarm/storage/feeds/error.go
index 452cc80f0e49b15f3bb382fe9592a0b40e844031..13266b900c0841a70cce53198a636ef29bb92e31 100644
--- a/swarm/storage/mru/error.go
+++ b/swarm/storage/feeds/error.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"fmt"
@@ -47,7 +47,7 @@ func (e *Error) Error() string {
 }
 
 // Code returns the error code
-// Error codes are enumerated in the error.go file within the mru package
+// Error codes are enumerated in the error.go file within the feeds package
 func (e *Error) Code() int {
 	return e.code
 }
diff --git a/swarm/storage/mru/view.go b/swarm/storage/feeds/feed.go
similarity index 79%
rename from swarm/storage/mru/view.go
rename to swarm/storage/feeds/feed.go
index 8d21ef7a4e7c8b3588ea40a9d259a21a875f8fcf..8a807d506a1c05da2e4eb1a4b494e159f7f7314e 100644
--- a/swarm/storage/mru/view.go
+++ b/swarm/storage/feeds/feed.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"hash"
@@ -37,9 +37,9 @@ type Feed struct {
 const feedLength = TopicLength + common.AddressLength
 
 // mapKey calculates a unique id for this feed. Used by the cache map in `Handler`
-func (u *Feed) mapKey() uint64 {
+func (f *Feed) mapKey() uint64 {
 	serializedData := make([]byte, feedLength)
-	u.binaryPut(serializedData)
+	f.binaryPut(serializedData)
 	hasher := hashPool.Get().(hash.Hash)
 	defer hashPool.Put(hasher)
 	hasher.Reset()
@@ -49,54 +49,54 @@ func (u *Feed) mapKey() uint64 {
 }
 
 // binaryPut serializes this Feed instance into the provided slice
-func (u *Feed) binaryPut(serializedData []byte) error {
+func (f *Feed) binaryPut(serializedData []byte) error {
 	if len(serializedData) != feedLength {
 		return NewErrorf(ErrInvalidValue, "Incorrect slice size to serialize Feed. Expected %d, got %d", feedLength, len(serializedData))
 	}
 	var cursor int
-	copy(serializedData[cursor:cursor+TopicLength], u.Topic[:TopicLength])
+	copy(serializedData[cursor:cursor+TopicLength], f.Topic[:TopicLength])
 	cursor += TopicLength
 
-	copy(serializedData[cursor:cursor+common.AddressLength], u.User[:])
+	copy(serializedData[cursor:cursor+common.AddressLength], f.User[:])
 	cursor += common.AddressLength
 
 	return nil
 }
 
 // binaryLength returns the expected size of this structure when serialized
-func (u *Feed) binaryLength() int {
+func (f *Feed) binaryLength() int {
 	return feedLength
 }
 
 // binaryGet restores the current instance from the information contained in the passed slice
-func (u *Feed) binaryGet(serializedData []byte) error {
+func (f *Feed) binaryGet(serializedData []byte) error {
 	if len(serializedData) != feedLength {
 		return NewErrorf(ErrInvalidValue, "Incorrect slice size to read Feed. Expected %d, got %d", feedLength, len(serializedData))
 	}
 
 	var cursor int
-	copy(u.Topic[:], serializedData[cursor:cursor+TopicLength])
+	copy(f.Topic[:], serializedData[cursor:cursor+TopicLength])
 	cursor += TopicLength
 
-	copy(u.User[:], serializedData[cursor:cursor+common.AddressLength])
+	copy(f.User[:], serializedData[cursor:cursor+common.AddressLength])
 	cursor += common.AddressLength
 
 	return nil
 }
 
 // Hex serializes the Feed to a hex string
-func (u *Feed) Hex() string {
+func (f *Feed) Hex() string {
 	serializedData := make([]byte, feedLength)
-	u.binaryPut(serializedData)
+	f.binaryPut(serializedData)
 	return hexutil.Encode(serializedData)
 }
 
 // FromValues deserializes this instance from a string key-value store
 // useful to parse query strings
-func (u *Feed) FromValues(values Values) (err error) {
+func (f *Feed) FromValues(values Values) (err error) {
 	topic := values.Get("topic")
 	if topic != "" {
-		if err := u.Topic.FromHex(values.Get("topic")); err != nil {
+		if err := f.Topic.FromHex(values.Get("topic")); err != nil {
 			return err
 		}
 	} else { // see if the user set name and relatedcontent
@@ -108,18 +108,18 @@ func (u *Feed) FromValues(values Values) (err error) {
 			}
 			relatedContent = relatedContent[:storage.AddressLength]
 		}
-		u.Topic, err = NewTopic(name, relatedContent)
+		f.Topic, err = NewTopic(name, relatedContent)
 		if err != nil {
 			return err
 		}
 	}
-	u.User = common.HexToAddress(values.Get("user"))
+	f.User = common.HexToAddress(values.Get("user"))
 	return nil
 }
 
 // AppendValues serializes this structure into the provided string key-value store
 // useful to build query strings
-func (u *Feed) AppendValues(values Values) {
-	values.Set("topic", u.Topic.Hex())
-	values.Set("user", u.User.Hex())
+func (f *Feed) AppendValues(values Values) {
+	values.Set("topic", f.Topic.Hex())
+	values.Set("user", f.User.Hex())
 }
diff --git a/swarm/storage/mru/view_test.go b/swarm/storage/feeds/feed_test.go
similarity index 98%
rename from swarm/storage/mru/view_test.go
rename to swarm/storage/feeds/feed_test.go
index e2f4d6b3099287028cc06d8ad2c5e4a099e0686a..7806e0ad70766a4634232f4af41fd55b909d3340 100644
--- a/swarm/storage/mru/view_test.go
+++ b/swarm/storage/feeds/feed_test.go
@@ -13,7 +13,7 @@
 //
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-package mru
+package feeds
 
 import (
 	"testing"
diff --git a/swarm/storage/mru/handler.go b/swarm/storage/feeds/handler.go
similarity index 99%
rename from swarm/storage/mru/handler.go
rename to swarm/storage/feeds/handler.go
index cc0da7df974bbc12045f77a00ba4f67666cd39c7..9c69fd1b4bb9f62084656959e56f460081325838 100644
--- a/swarm/storage/mru/handler.go
+++ b/swarm/storage/feeds/handler.go
@@ -16,7 +16,7 @@
 
 // Handler is the API for Feeds
 // It enables creating, updating, syncing and retrieving feed updates and their data
-package mru
+package feeds
 
 import (
 	"bytes"
@@ -25,7 +25,7 @@ import (
 	"sync"
 	"time"
 
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 
 	"github.com/ethereum/go-ethereum/swarm/log"
 	"github.com/ethereum/go-ethereum/swarm/storage"
diff --git a/swarm/storage/mru/handler_test.go b/swarm/storage/feeds/handler_test.go
similarity index 99%
rename from swarm/storage/mru/handler_test.go
rename to swarm/storage/feeds/handler_test.go
index b66ff0c8015566bec1e9d1030ef52034ea1f129e..8331980ca0c151666fba7494771423fe9bd96512 100644
--- a/swarm/storage/mru/handler_test.go
+++ b/swarm/storage/feeds/handler_test.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"bytes"
@@ -31,7 +31,7 @@ import (
 	"github.com/ethereum/go-ethereum/log"
 	"github.com/ethereum/go-ethereum/swarm/chunk"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 var (
diff --git a/swarm/storage/mru/id.go b/swarm/storage/feeds/id.go
similarity index 97%
rename from swarm/storage/mru/id.go
rename to swarm/storage/feeds/id.go
index dcc88ac2ad958403d662187f712f48d480f1e04d..dd813ae89429ac78783725fc342ecf0422f6d1d1 100644
--- a/swarm/storage/mru/id.go
+++ b/swarm/storage/feeds/id.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"fmt"
@@ -22,7 +22,7 @@ import (
 	"strconv"
 
 	"github.com/ethereum/go-ethereum/common"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 
 	"github.com/ethereum/go-ethereum/swarm/storage"
 )
diff --git a/swarm/storage/mru/id_test.go b/swarm/storage/feeds/id_test.go
similarity index 89%
rename from swarm/storage/mru/id_test.go
rename to swarm/storage/feeds/id_test.go
index 767b3c1599914d74fe15e7352b2399312f2c1097..2ef12e8912357e8b394920a86ac05b5d628b469e 100644
--- a/swarm/storage/mru/id_test.go
+++ b/swarm/storage/feeds/id_test.go
@@ -1,9 +1,9 @@
-package mru
+package feeds
 
 import (
 	"testing"
 
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 func getTestID() *ID {
diff --git a/swarm/storage/mru/lookup/epoch.go b/swarm/storage/feeds/lookup/epoch.go
similarity index 100%
rename from swarm/storage/mru/lookup/epoch.go
rename to swarm/storage/feeds/lookup/epoch.go
diff --git a/swarm/storage/mru/lookup/epoch_test.go b/swarm/storage/feeds/lookup/epoch_test.go
similarity index 93%
rename from swarm/storage/mru/lookup/epoch_test.go
rename to swarm/storage/feeds/lookup/epoch_test.go
index 62cf5523d8066a53e0c904a6e851e19846106ac0..70bfd836a501df5cd0babba172f754b4b276baec 100644
--- a/swarm/storage/mru/lookup/epoch_test.go
+++ b/swarm/storage/feeds/lookup/epoch_test.go
@@ -3,7 +3,7 @@ package lookup_test
 import (
 	"testing"
 
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 func TestMarshallers(t *testing.T) {
diff --git a/swarm/storage/mru/lookup/lookup.go b/swarm/storage/feeds/lookup/lookup.go
similarity index 100%
rename from swarm/storage/mru/lookup/lookup.go
rename to swarm/storage/feeds/lookup/lookup.go
diff --git a/swarm/storage/mru/lookup/lookup_test.go b/swarm/storage/feeds/lookup/lookup_test.go
similarity index 99%
rename from swarm/storage/mru/lookup/lookup_test.go
rename to swarm/storage/feeds/lookup/lookup_test.go
index 34bcb61f0c5d8d2a45664acc31798defecffcf4e..7d5014608e48def1e11056d9c24eacd3a3ca8705 100644
--- a/swarm/storage/mru/lookup/lookup_test.go
+++ b/swarm/storage/feeds/lookup/lookup_test.go
@@ -22,7 +22,7 @@ import (
 	"testing"
 
 	"github.com/ethereum/go-ethereum/swarm/log"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 type Data struct {
diff --git a/swarm/storage/mru/query.go b/swarm/storage/feeds/query.go
similarity index 97%
rename from swarm/storage/mru/query.go
rename to swarm/storage/feeds/query.go
index a0b358bfdedec1f9c62b996add7a2fde9ce497c4..7bd2800a8ff6070ff58811a8d8609bc7cbc30af6 100644
--- a/swarm/storage/mru/query.go
+++ b/swarm/storage/feeds/query.go
@@ -14,14 +14,14 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"fmt"
 	"strconv"
 
 	"github.com/ethereum/go-ethereum/common"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 // Query is used to specify constraints when performing an update lookup
diff --git a/swarm/storage/mru/query_test.go b/swarm/storage/feeds/query_test.go
similarity index 98%
rename from swarm/storage/mru/query_test.go
rename to swarm/storage/feeds/query_test.go
index 4cfc597b256d348865b356a93804ddd43082d9b0..1420c69ae8bd8a087061a669b7ab7c7eddc61286 100644
--- a/swarm/storage/mru/query_test.go
+++ b/swarm/storage/feeds/query_test.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"testing"
diff --git a/swarm/storage/mru/request.go b/swarm/storage/feeds/request.go
similarity index 99%
rename from swarm/storage/mru/request.go
rename to swarm/storage/feeds/request.go
index ca88adda15cdbe7cbd9e4e95bd99a65fa11cac9a..719d8fba8bbd8e7657c13ebef0e0772765c9deba 100644
--- a/swarm/storage/mru/request.go
+++ b/swarm/storage/feeds/request.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"bytes"
@@ -24,7 +24,7 @@ import (
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/common/hexutil"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 // Request represents a request to sign or signed Feed Update message
diff --git a/swarm/storage/mru/request_test.go b/swarm/storage/feeds/request_test.go
similarity index 99%
rename from swarm/storage/mru/request_test.go
rename to swarm/storage/feeds/request_test.go
index 515de651cc853690f2107b1d4804afb83bf1e7b8..2e378383461285284d3524d7cee3164b7a019ec9 100644
--- a/swarm/storage/mru/request_test.go
+++ b/swarm/storage/feeds/request_test.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"bytes"
@@ -26,7 +26,7 @@ import (
 
 	"github.com/ethereum/go-ethereum/crypto"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru/lookup"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds/lookup"
 )
 
 func areEqualJSON(s1, s2 string) (bool, error) {
diff --git a/swarm/storage/mru/sign.go b/swarm/storage/feeds/sign.go
similarity index 99%
rename from swarm/storage/mru/sign.go
rename to swarm/storage/feeds/sign.go
index 03b0fa2b6449a07f4ef84e44a89d57ebc7f4531b..a69942f2bbb3a902e69611d62a2eba383512cb10 100644
--- a/swarm/storage/mru/sign.go
+++ b/swarm/storage/feeds/sign.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"crypto/ecdsa"
diff --git a/swarm/storage/mru/testutil.go b/swarm/storage/feeds/testutil.go
similarity index 99%
rename from swarm/storage/mru/testutil.go
rename to swarm/storage/feeds/testutil.go
index 80e0d4cf0cf48aa36ad9f048d983f0e48777dc93..879f73348deed62e074488816d76279b8e20277b 100644
--- a/swarm/storage/mru/testutil.go
+++ b/swarm/storage/feeds/testutil.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"context"
diff --git a/swarm/storage/mru/timestampprovider.go b/swarm/storage/feeds/timestampprovider.go
similarity index 97%
rename from swarm/storage/mru/timestampprovider.go
rename to swarm/storage/feeds/timestampprovider.go
index 6ac1532134d4634a17f3c42aaeb347c92abe6d66..f6aa0775c7c5c89aa9845b858c862aa251fec527 100644
--- a/swarm/storage/mru/timestampprovider.go
+++ b/swarm/storage/feeds/timestampprovider.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"encoding/binary"
@@ -22,7 +22,7 @@ import (
 	"time"
 )
 
-// TimestampProvider sets the time source of the mru package
+// TimestampProvider sets the time source of the feeds package
 var TimestampProvider timestampProvider = NewDefaultTimestampProvider()
 
 // Timestamp encodes a point in time as a Unix epoch
diff --git a/swarm/storage/mru/topic.go b/swarm/storage/feeds/topic.go
similarity index 99%
rename from swarm/storage/mru/topic.go
rename to swarm/storage/feeds/topic.go
index b6adb4cd7fe9fa88a7bc6230742a46815556b0b1..2dc8c18cdfd9d530ad910181a48103f7b81f9d11 100644
--- a/swarm/storage/mru/topic.go
+++ b/swarm/storage/feeds/topic.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"bytes"
diff --git a/swarm/storage/mru/topic_test.go b/swarm/storage/feeds/topic_test.go
similarity index 98%
rename from swarm/storage/mru/topic_test.go
rename to swarm/storage/feeds/topic_test.go
index dad7c7ddceb33326852e1c816b0ca079232b7680..8994002d7c6b1297760dd5ca95ad068950608464 100644
--- a/swarm/storage/mru/topic_test.go
+++ b/swarm/storage/feeds/topic_test.go
@@ -1,4 +1,4 @@
-package mru
+package feeds
 
 import (
 	"testing"
diff --git a/swarm/storage/mru/update.go b/swarm/storage/feeds/update.go
similarity index 99%
rename from swarm/storage/mru/update.go
rename to swarm/storage/feeds/update.go
index f6e70b4d81f230e76e034796a59e32a857e00b8f..02bd3752209f023d2cb63c0818caa3e621787a29 100644
--- a/swarm/storage/mru/update.go
+++ b/swarm/storage/feeds/update.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"fmt"
diff --git a/swarm/storage/mru/update_test.go b/swarm/storage/feeds/update_test.go
similarity index 99%
rename from swarm/storage/mru/update_test.go
rename to swarm/storage/feeds/update_test.go
index 62c401f3fafa1bf4893ac909a6473443d94f8d9c..7763da0c8db10372d4ff584c01dcd73ffe76b715 100644
--- a/swarm/storage/mru/update_test.go
+++ b/swarm/storage/feeds/update_test.go
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU Lesser General Public License
 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
 
-package mru
+package feeds
 
 import (
 	"testing"
diff --git a/swarm/swarm.go b/swarm/swarm.go
index 4d9bf724fc34df8c072fa176cda87df79d0afaa1..74c53dece38b14dc6a190ae2b732ca543825c95c 100644
--- a/swarm/swarm.go
+++ b/swarm/swarm.go
@@ -50,7 +50,7 @@ import (
 	"github.com/ethereum/go-ethereum/swarm/state"
 	"github.com/ethereum/go-ethereum/swarm/storage"
 	"github.com/ethereum/go-ethereum/swarm/storage/mock"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 	"github.com/ethereum/go-ethereum/swarm/tracing"
 )
 
@@ -186,10 +186,10 @@ func NewSwarm(config *api.Config, mockStore *mock.NodeStore) (self *Swarm, err e
 	// Swarm Hash Merklised Chunking for Arbitrary-length Document/File storage
 	self.fileStore = storage.NewFileStore(self.netStore, self.config.FileStoreParams)
 
-	var feedsHandler *mru.Handler
-	fhParams := &mru.HandlerParams{}
+	var feedsHandler *feeds.Handler
+	fhParams := &feeds.HandlerParams{}
 
-	feedsHandler = mru.NewHandler(fhParams)
+	feedsHandler = feeds.NewHandler(fhParams)
 	feedsHandler.SetStore(self.netStore)
 
 	lstore.Validators = []storage.ChunkValidator{
diff --git a/swarm/testutil/http.go b/swarm/testutil/http.go
index 2162da880997aff2fef96a2e1637dda639ca31ec..05b7c52e0d788b74059430240c0e2470895234e3 100644
--- a/swarm/testutil/http.go
+++ b/swarm/testutil/http.go
@@ -25,7 +25,7 @@ import (
 
 	"github.com/ethereum/go-ethereum/swarm/api"
 	"github.com/ethereum/go-ethereum/swarm/storage"
-	"github.com/ethereum/go-ethereum/swarm/storage/mru"
+	"github.com/ethereum/go-ethereum/swarm/storage/feeds"
 )
 
 type TestServer interface {
@@ -54,8 +54,8 @@ func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer, reso
 		t.Fatal(err)
 	}
 
-	rhparams := &mru.HandlerParams{}
-	rh, err := mru.NewTestHandler(feedsDir, rhparams)
+	rhparams := &feeds.HandlerParams{}
+	rh, err := feeds.NewTestHandler(feedsDir, rhparams)
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -75,7 +75,7 @@ func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer, reso
 		},
 		CurrentTime: 42,
 	}
-	mru.TimestampProvider = tss
+	feeds.TimestampProvider = tss
 	return tss
 }
 
@@ -92,6 +92,6 @@ func (t *TestSwarmServer) Close() {
 	t.cleanup()
 }
 
-func (t *TestSwarmServer) Now() mru.Timestamp {
-	return mru.Timestamp{Time: t.CurrentTime}
+func (t *TestSwarmServer) Now() feeds.Timestamp {
+	return feeds.Timestamp{Time: t.CurrentTime}
 }