diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
index cb0981f36c42cbecc4b5a18be7f90cba5fd1d681..d1fb275e55a10ceea44dc261368f22d844f50004 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
@@ -226,8 +226,8 @@ public class BlogFragment extends BaseFragment
 
 	private void loadBlogPosts(final boolean reload) {
 		blogController.loadBlogPosts(
-				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						this) {
+				new UiResultExceptionHandler<Collection<BlogPostItem>,
+						DbException>(this) {
 					@Override
 					public void onResultUi(Collection<BlogPostItem> posts) {
 						if (posts.isEmpty()) {
@@ -265,13 +265,13 @@ public class BlogFragment extends BaseFragment
 	}
 
 	private void setToolbarTitle(Author a) {
-		String title = getString(R.string.blogs_personal_blog, a.getName());
-		getActivity().setTitle(title);
+		getActivity().setTitle(a.getName());
 	}
 
 	private void loadSharedContacts() {
 		blogController.loadSharingContacts(
-				new UiResultExceptionHandler<Collection<ContactId>, DbException>(this) {
+				new UiResultExceptionHandler<Collection<ContactId>,
+						DbException>(this) {
 					@Override
 					public void onResultUi(Collection<ContactId> contacts) {
 						sharingController.addAll(contacts);
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 22c21a1ee2937ebafe92361bbc344c63edfc5e4b..923f2b40a357d64ba007c6658da6c5e08f270104 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -268,7 +268,6 @@
 	<string name="blogs_blog_post_received">New Blog Post Received</string>
 	<string name="blogs_blog_post_scroll_to">Scroll To</string>
 	<string name="blogs_feed_empty_state">This is the global blog feed.\n\nIt looks like nobody blogged anything, yet.\n\nBe the first and tap the pen icon to write a new blog post.</string>
-	<string name="blogs_personal_blog">%s\'s Personal Blog</string>
 	<string name="blogs_remove_blog">Remove Blog</string>
 	<string name="blogs_remove_blog_dialog_message">Are you sure that you want to remove this blog and all posts?\nNote that this will not remove the blog from other people\'s devices.</string>
 	<string name="blogs_remove_blog_ok">Remove Blog</string>
@@ -285,8 +284,8 @@
 	<string name="blogs_sharing_response_declined_sent">You declined the blog invitation from %s.</string>
 	<string name="blogs_sharing_response_accepted_received">%s accepted the blog invitation.</string>
 	<string name="blogs_sharing_response_declined_received">%s declined the blog invitation.</string>
-	<string name="blogs_sharing_invitation_received">%1$s has shared the personal blog of %2$s with you.</string>
-	<string name="blogs_sharing_invitation_sent">You have shared the personal blog of %1$s with %2$s.</string>
+	<string name="blogs_sharing_invitation_received">%1$s has shared the blog \"%2$s\" with you.</string>
+	<string name="blogs_sharing_invitation_sent">You have shared the blog \"%1$s\" with %2$s.</string>
 	<string name="blogs_sharing_invitations_title">Blog Invitations</string>
 	<string name="blogs_sharing_joined_toast">Subscribed to Blog</string>
 	<string name="blogs_sharing_declined_toast">Blog Invitation Declined</string>
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
index bc56ac377b7139a14d31518c763a169769ac7a0c..4ad7e99eb7d4058271b74c147a7c19f1974aedc1 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
@@ -22,9 +22,9 @@ public interface BlogManager {
 	ClientId CLIENT_ID = new ClientId("org.briarproject.briar.blog");
 
 	/**
-	 * Adds a blog from the given author.
+	 * Adds the given {@link Blog).}
 	 */
-	Blog addBlog(Author author) throws DbException;
+	void addBlog(Blog b) throws DbException;
 
 	/**
 	 * Adds the given {@link Blog} within the given {@link Transaction}.
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
index 845e69c69443a06216ce90515bb66af1cba47c22..e42932e1946f2b4d059a1cc476d170ce2a506de3 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
@@ -168,9 +168,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
 	}
 
 	@Override
-	public Blog addBlog(Author author) throws DbException {
-		Blog b = blogFactory.createBlog(author);
-
+	public void addBlog(Blog b) throws DbException {
 		Transaction txn = db.startTransaction(false);
 		try {
 			db.addGroup(txn, b.getGroup());
@@ -178,7 +176,6 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
 		} finally {
 			db.endTransaction(txn);
 		}
-		return b;
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java
index bcf0115191336a50bec271cef6eb9f61695e58f1..6795b0fb05d8142dbba63fe5b9d81c944890e247 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java
@@ -32,8 +32,10 @@ class BlogMessageParserImpl extends MessageParserImpl<Blog> {
 			throws FormatException {
 		String name = descriptor.getString(0);
 		byte[] publicKey = descriptor.getRaw(1);
+		boolean rssFeed = descriptor.getBoolean(2);
 		Author author = authorFactory.createAuthor(name, publicKey);
-		return blogFactory.createBlog(author);
+		if (rssFeed) return blogFactory.createFeedBlog(author);
+		else return blogFactory.createBlog(author);
 	}
 
 }
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
index 0b99d75bf61407d779f7f5026890c23a0f460bfb..461937caab338c38020b71014b590210248773f2 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
@@ -139,12 +139,11 @@ abstract class SharingManagerImpl<S extends Shareable>
 		return false;
 	}
 
-	protected void initializeSharedSession(Transaction txn, Contact c,
-			S shareable) throws DbException, FormatException {
+	void initializeSharedSession(Transaction txn, Contact c, S shareable)
+			throws DbException, FormatException {
 		GroupId contactGroupId = getContactGroup(c).getId();
-		Session session =
-				new Session(SHARING, contactGroupId, shareable.getId(), null,
-						null, 0, 0);
+		Session session = new Session(SHARING, contactGroupId,
+				shareable.getId(), null, null, 0, 0);
 		MessageId storageId = createStorageId(txn, contactGroupId);
 		storeSession(txn, storageId, session);
 	}
@@ -442,8 +441,7 @@ abstract class SharingManagerImpl<S extends Shareable>
 		}
 	}
 
-	protected void removingShareable(Transaction txn, S shareable)
-			throws DbException {
+	void removingShareable(Transaction txn, S shareable) throws DbException {
 		SessionId sessionId = getSessionId(shareable.getId());
 		// If we have any sessions in progress, tell the contacts we're leaving
 		try {
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
index e13718352e8a950e51058205bfdf238ad8ee5835..b66b98124d5c99b42996344397e104b42420eb69 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
@@ -11,6 +11,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.blog.Blog;
+import org.briarproject.briar.api.blog.BlogFactory;
 import org.briarproject.briar.api.blog.BlogInvitationRequest;
 import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.blog.BlogManager;
@@ -42,7 +43,7 @@ public class BlogSharingIntegrationTest
 		extends BriarIntegrationTest<BriarIntegrationTestComponent> {
 
 	private BlogManager blogManager0, blogManager1;
-	private Blog blog0, blog1, blog2;
+	private Blog blog0, blog1, blog2, rssBlog;
 	private SharerListener listener0;
 	private InviteeListener listener1;
 
@@ -69,6 +70,8 @@ public class BlogSharingIntegrationTest
 		blog0 = blogManager0.getPersonalBlog(author0);
 		blog1 = blogManager0.getPersonalBlog(author1);
 		blog2 = blogManager0.getPersonalBlog(author2);
+		BlogFactory blogFactory = c0.getBlogFactory();
+		rssBlog = blogFactory.createFeedBlog(author0);
 
 		// initialize waiters fresh for each test
 		eventWaiter = new Waiter();
@@ -127,8 +130,7 @@ public class BlogSharingIntegrationTest
 
 		// get sharing group and assert group message count
 		GroupId g = contactGroupFactory.createContactGroup(CLIENT_ID,
-				contact1From0)
-				.getId();
+				contact1From0).getId();
 		assertGroupCount(messageTracker0, g, 1, 0);
 
 		// sync first request message
@@ -146,6 +148,7 @@ public class BlogSharingIntegrationTest
 		// blog was added successfully
 		assertEquals(0, blogSharingManager0.getInvitations().size());
 		assertEquals(3, blogManager1.getBlogs().size());
+		assertTrue(blogManager1.getBlogs().contains(blog2));
 
 		// invitee has one invitation message from sharer
 		List<InvitationMessage> list =
@@ -160,6 +163,7 @@ public class BlogSharingIntegrationTest
 				assertFalse(invitation.isAvailable());
 				assertEquals(blog2.getAuthor().getName(),
 						invitation.getBlogAuthorName());
+				assertFalse(invitation.getShareable().isRssFeed());
 				assertEquals(contactId1From0, invitation.getContactId());
 				assertEquals("Hi!", invitation.getMessage());
 			} else {
@@ -185,6 +189,81 @@ public class BlogSharingIntegrationTest
 		assertGroupCount(messageTracker1, g, 2, 1);
 	}
 
+	@Test
+	public void testSuccessfulSharingWithRssBlog() throws Exception {
+		// initialize and let invitee accept all requests
+		listenToEvents(true);
+
+		// subscribe to RSS blog
+		blogManager0.addBlog(rssBlog);
+
+		// send invitation
+		blogSharingManager0.sendInvitation(rssBlog.getId(), contactId1From0,
+				"Hi!", clock.currentTimeMillis());
+
+		// invitee has own blog and that of the sharer
+		assertEquals(2, blogManager1.getBlogs().size());
+
+		// get sharing group and assert group message count
+		GroupId g = contactGroupFactory.createContactGroup(CLIENT_ID,
+				contact1From0).getId();
+		assertGroupCount(messageTracker0, g, 1, 0);
+
+		// sync first request message
+		sync0To1(1, true);
+		eventWaiter.await(TIMEOUT, 1);
+		assertTrue(listener1.requestReceived);
+		assertGroupCount(messageTracker1, g, 2, 1);
+
+		// sync response back
+		sync1To0(1, true);
+		eventWaiter.await(TIMEOUT, 1);
+		assertTrue(listener0.responseReceived);
+		assertGroupCount(messageTracker0, g, 2, 1);
+
+		// blog was added successfully
+		assertEquals(0, blogSharingManager0.getInvitations().size());
+		assertEquals(3, blogManager1.getBlogs().size());
+		assertTrue(blogManager1.getBlogs().contains(rssBlog));
+
+		// invitee has one invitation message from sharer
+		List<InvitationMessage> list =
+				new ArrayList<InvitationMessage>(blogSharingManager1
+						.getInvitationMessages(contactId0From1));
+		assertEquals(2, list.size());
+		// check other things are alright with the message
+		for (InvitationMessage m : list) {
+			if (m instanceof BlogInvitationRequest) {
+				BlogInvitationRequest invitation =
+						(BlogInvitationRequest) m;
+				assertFalse(invitation.isAvailable());
+				assertEquals(rssBlog.getAuthor().getName(),
+						invitation.getBlogAuthorName());
+				assertTrue(invitation.getShareable().isRssFeed());
+				assertEquals(contactId1From0, invitation.getContactId());
+				assertEquals("Hi!", invitation.getMessage());
+			} else {
+				BlogInvitationResponse response =
+						(BlogInvitationResponse) m;
+				assertEquals(contactId0From1, response.getContactId());
+				assertTrue(response.wasAccepted());
+				assertTrue(response.isLocal());
+			}
+		}
+		// sharer has own invitation message and response
+		assertEquals(2, blogSharingManager0.getInvitationMessages(
+				contactId1From0).size());
+		// blog can not be shared again
+		assertFalse(blogSharingManager0.canBeShared(rssBlog.getId(),
+				contact1From0));
+		assertFalse(blogSharingManager1.canBeShared(rssBlog.getId(),
+				contact0From1));
+
+		// group message count is still correct
+		assertGroupCount(messageTracker0, g, 2, 1);
+		assertGroupCount(messageTracker1, g, 2, 1);
+	}
+
 	@Test
 	public void testDeclinedSharing() throws Exception {
 		// initialize and let invitee deny all requests
diff --git a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
index c114930bf8c330cb8bfd5ea58fcfe107b13ce773..679d7772aa7798c863aa4129dfbd27e347760b97 100644
--- a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
@@ -24,6 +24,7 @@ import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.bramble.test.TestPluginConfigModule;
 import org.briarproject.bramble.test.TestSeedProviderModule;
 import org.briarproject.bramble.transport.TransportModule;
+import org.briarproject.briar.api.blog.BlogFactory;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.client.MessageTracker;
@@ -138,4 +139,6 @@ public interface BriarIntegrationTestComponent {
 	TransportPropertyManager getTransportPropertyManager();
 
 	AuthorFactory getAuthorFactory();
+
+	BlogFactory getBlogFactory();
 }