diff --git a/2_critical_filter_solution.py b/2_critical_filter_solution.py
index 8e78e3eae010a1aeea331995e27a53e94d877a22..351e084151883ff6bdd5366cfb1821043a504680 100644
--- a/2_critical_filter_solution.py
+++ b/2_critical_filter_solution.py
@@ -48,7 +48,8 @@ signal_response = R @ signal
 N = ift.ScalingOperator(data_space, 0.1)
 data, ground_truth = generate_gaussian_data(signal_response, N)
 
-plot_prior_samples_2d(5, signal, R, signal, signal.amplitude, '2_gauss', N=N)
+plot_prior_samples_2d(5, signal, R, signal, signal.power_spectrum, 'gauss',
+                      N=N)
 
 likelihood = ift.GaussianEnergy(
     mean=data, inverse_covariance=N.inverse)(signal_response)
@@ -72,5 +73,5 @@ for ii in range(n_rounds):
     mean = KL.position
 
 # Plot posterior samples
-plot_reconstruction_2d(data, ground_truth, KL, signal, R, signal.amplitude,
-                       '2_criticalfilter')
+plot_reconstruction_2d(data, ground_truth, KL, signal, R,
+                       signal.power_spectrum, '2_criticalfilter')
diff --git a/3_more_examples.py b/3_more_examples.py
index a82507b71a9175dce8aed7a807548c5b0c52a56f..ca9c0646c3b45d3da5e54149ffde69c96611de52 100644
--- a/3_more_examples.py
+++ b/3_more_examples.py
@@ -45,7 +45,7 @@ for mode in [0, 1]:
         'asperity': (0.5, 0.4)  # 0.1, 0.5
     }
     correlated_field = ift.SimpleCorrelatedField(position_space, **args)
-    A = correlated_field.amplitude
+    pspec = correlated_field.power_spectrum
 
     dct = {}
     if mode == 0:
@@ -54,7 +54,7 @@ for mode in [0, 1]:
     else:
         signal = correlated_field.exp()
         R = h.exposure_response(position_space)
-    h.plot_prior_samples_2d(5, signal, R, correlated_field, A, name[mode],
+    h.plot_prior_samples_2d(5, signal, R, correlated_field, pspec, name[mode],
                             **dct)
     signal_response = R @ signal
     if mode == 0:
@@ -79,4 +79,5 @@ for mode in [0, 1]:
         KL = ift.MetricGaussianKL(mean, H, 30 if ii == n_rounds-1 else 5, True)
         KL, convergence = minimizer(KL)
         mean = KL.position
-    h.plot_reconstruction_2d(data, ground_truth, KL, signal, R, A, name[mode])
+    h.plot_reconstruction_2d(data, ground_truth, KL, signal, R, pspec,
+                             name[mode])
diff --git a/helpers/plot.py b/helpers/plot.py
index 2f2c3da676f5eaec5602943cc81b9561acac2697..03c452c7f68e10b6d828037d1b1288b28b43a233 100644
--- a/helpers/plot.py
+++ b/helpers/plot.py
@@ -85,10 +85,9 @@ def power_plot(name, s, m, samples=None):
     plt.close('all')
 
 
-def plot_prior_samples_2d(n_samps, signal, R, correlated_field, A, likelihood,
-                          N=None):
+def plot_prior_samples_2d(n_samps, signal, R, correlated_field, pspec,
+                          likelihood, N=None):
     samples, pspecmin, pspecmax = [], np.inf, 0
-    pspec = A*A
     for _ in range(n_samps):
         ss = ift.from_random(signal.domain)
         samples.append(ss)
@@ -118,8 +117,7 @@ def plot_prior_samples_2d(n_samps, signal, R, correlated_field, A, likelihood,
             raise ValueError('likelihood type not implemented')
         data = R.adjoint(data + 0.)
 
-        As = pspec.force(sample)
-        ax[ii, 0].plot(As.domain[0].k_lengths, As.val)
+        ax[ii, 0].plot(pspec.target[0].k_lengths, pspec.force(sample))
         ax[ii, 0].set_yscale('log')
         ax[ii, 0].set_xscale('log')
         ax[ii, 0].set_ylim(pspecmin, pspecmax)
@@ -155,14 +153,14 @@ def plot_prior_samples_2d(n_samps, signal, R, correlated_field, A, likelihood,
     plt.close('all')
 
 
-def plot_reconstruction_2d(data, ground_truth, KL, signal, R, A, name):
+def plot_reconstruction_2d(data, ground_truth, KL, signal, R, pspec, name):
     sc = ift.StatCalculator()
     sky_samples, pspec_samples = [], []
     for sample in KL.samples:
         tmp = signal(sample + KL.position)
         sc.add(tmp)
         sky_samples.append(tmp)
-        pspec_samples.append(A.force(sample)**2)
+        pspec_samples.append(pspec.force(sample))
 
     fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(4*3, 4*2))
     im = []
@@ -198,7 +196,7 @@ def plot_reconstruction_2d(data, ground_truth, KL, signal, R, A, name):
         label='reconstruction')
     ax[1, 2].plot(
         amp_mean.domain[0].k_lengths,
-        A.force(ground_truth).val**2,
+        pspec.force(ground_truth).val,
         color='b',
         label='ground truth')
     ax[1, 2].legend()
diff --git a/teaser_critical_filter.py b/teaser_critical_filter.py
index 468caebf8eb9808adf365679b81ab0af711ac6b9..1c13b7772aa6252cb25ed0b310e1c87bd4fd4e2f 100644
--- a/teaser_critical_filter.py
+++ b/teaser_critical_filter.py
@@ -15,8 +15,12 @@
 #
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
+from functools import reduce
+from operator import add
+
 import nifty7 as ift
-from helpers import plot_WF, power_plot, generate_mysterious_data
+
+from helpers import generate_mysterious_data, plot_WF, power_plot
 
 position_space = ift.RGSpace(256)
 harmonic_space = position_space.get_default_codomain()
@@ -25,8 +29,8 @@ HT = ift.HarmonicTransformOperator(harmonic_space, target=position_space)
 
 power_space = ift.PowerSpace(harmonic_space)
 
-# Set up an amplitude operator for the field
-# We want to set up a model for the amplitude spectrum with some magic numbers
+# Set up prior model for the field for the field
+# We want to set up a model for the power spectrum with some magic numbers
 args = {
     'offset_mean': 0,
     'offset_std': (1e-3, 1e-6),
@@ -43,10 +47,8 @@ args = {
     # How ragged the integrated Wiener process component is
     'asperity': (0.5, 0.4)  # 0.1, 0.5
 }
-
 correlated_field = ift.SimpleCorrelatedField(position_space, **args)
-A = correlated_field.amplitude
-# FIXME amplitude -> power spectrum (global)
+pspec = correlated_field.power_spectrum
 
 # Set up specific scenario
 R = ift.GeometryRemover(position_space)
@@ -95,10 +97,10 @@ plot_WF('teaser_unknown_power', ground_truth, data, m=mean,
 
 # Plot the reconstruction of the power spectrum
 mysterious_spectrum = lambda k: 5/((7**2 - k**2)**2 + 3**2*k**2)
-ground_truth_spectrum = ift.makeField(power_space, mysterious_spectrum(power_space.k_lengths))
-posterior_power_samples = [A.force(KL.position+samp)**2 for samp in KL.samples]
-power_mean = 0.*posterior_power_samples[0]
-for p in posterior_power_samples:
-    power_mean = power_mean + p/len(posterior_power_samples)
+# FIXME There is a simpler way, isn't it?
+ground_truth_spectrum = ift.makeField(power_space,
+                                      mysterious_spectrum(power_space.k_lengths))
+posterior_power_samples = [pspec.force(KL.position+samp) for samp in KL.samples]
+power_mean = reduce(add, posterior_power_samples)
 power_plot('teaser_power_reconstruction', ground_truth_spectrum, power_mean,
            posterior_power_samples)