diff --git a/config/initializers/diaspora_federation.rb b/config/initializers/diaspora_federation.rb
index e0d16ee44de705942b21f5954434dc3def85b085..cedbf2e000c86477788bd212a181006180b0fbbd 100644
--- a/config/initializers/diaspora_federation.rb
+++ b/config/initializers/diaspora_federation.rb
@@ -9,8 +9,8 @@ DiasporaFederation.configure do |config|
       if person
         DiasporaFederation::WebFinger::WebFinger.new(
           acct_uri:    "acct:#{person.diaspora_handle}",
-          alias_url:   url_to("/people/#{person.guid}"),
-          hcard_url:   url_to(DiasporaFederation::Engine.routes.url_helpers.hcard_path(person.guid)),
+          alias_url:   AppConfig.url_to("/people/#{person.guid}"),
+          hcard_url:   AppConfig.url_to(DiasporaFederation::Engine.routes.url_helpers.hcard_path(person.guid)),
           seed_url:    AppConfig.pod_uri,
           profile_url: person.profile_url,
           atom_url:    person.atom_url,
@@ -40,8 +40,4 @@ DiasporaFederation.configure do |config|
       end
     end
   end
-
-  def url_to(path)
-    AppConfig.pod_uri.tap {|uri| uri.path = path }.to_s
-  end
 end
diff --git a/lib/configuration_methods.rb b/lib/configuration_methods.rb
index 107fde37c0c66a15491f12f0e270e46b60cce83d..81d769b78e133eeb4afacb6b79bdf6282cf7a4c9 100644
--- a/lib/configuration_methods.rb
+++ b/lib/configuration_methods.rb
@@ -3,19 +3,25 @@ module Configuration
 
   module Methods
     def pod_uri
-      return @pod_uri unless @pod_uri.nil?
+      return @pod_uri.dup unless @pod_uri.nil?
 
       url = environment.url.get
       url = "http://#{url}" unless url =~ /^(https?:\/\/)/
       url << "/" unless url.end_with?("/")
 
       begin
-        @pod_url = Addressable::URI.parse(url)
+        @pod_uri = Addressable::URI.parse(url)
       rescue
         puts "WARNING: pod url #{url} is not a legal URI"
       end
 
-      @pod_url
+      @pod_uri.dup
+    end
+
+    # @param path [String]
+    # @return [String]
+    def url_to(path)
+      pod_uri.tap {|uri| uri.path = path }.to_s
     end
 
     def bare_pod_uri
diff --git a/spec/lib/configuration_methods_spec.rb b/spec/lib/configuration_methods_spec.rb
index 966b4c0396fa5789a265e5b6709da498c8f9ee36..452fbfe249af9c5a201e71b07fd5e0848724c777 100644
--- a/spec/lib/configuration_methods_spec.rb
+++ b/spec/lib/configuration_methods_spec.rb
@@ -21,7 +21,7 @@ describe Configuration::Methods do
       expect(@settings.pod_uri.host).to eq("example.org")
     end
 
-     it "adds a trailing slash if there isn't one" do
+    it "adds a trailing slash if there isn't one" do
       @settings.environment.url = "http://example.org"
       expect(@settings.pod_uri.to_s).to eq("http://example.org/")
     end
@@ -40,6 +40,12 @@ describe Configuration::Methods do
       @settings.environment.url = "https://example.org/"
       expect(@settings.pod_uri.to_s).to eq("https://example.org/")
     end
+
+    it "returns another instance everytime" do
+      @settings.environment.url = "https://example.org/"
+      uri = @settings.pod_uri
+      expect(@settings.pod_uri).not_to be(uri)
+    end
   end
 
   describe "#bare_pod_uri" do
@@ -51,6 +57,21 @@ describe Configuration::Methods do
     end
   end
 
+  describe "#url_to" do
+    before do
+      @settings.environment.url = "https://example.org"
+      @settings.instance_variable_set(:@pod_uri, nil)
+    end
+
+    it "appends the path to the pod url" do
+      expect(@settings.url_to("/any/path")).to eq("https://example.org/any/path")
+    end
+
+    it "does not add double slash" do
+      expect(@settings.url_to("/any/path")).to eq("https://example.org/any/path")
+    end
+  end
+
   describe "#configured_services" do
     it "includes the enabled services only" do
       services = double