diff --git a/examples/injection_examples/basic_tutorial.py b/examples/injection_examples/basic_tutorial.py
index c105e80d0d8e435c448c8bd502b3766b244f7173..dd990be32f856d842a49386009d90852fd5bec04 100644
--- a/examples/injection_examples/basic_tutorial.py
+++ b/examples/injection_examples/basic_tutorial.py
@@ -23,10 +23,10 @@ injection_parameters = dict(mass_1=36., mass_2=29., a_1=0.4, a_2=0.3, tilt_1=0.5
                             waveform_approximant='IMRPhenomPv2', reference_frequency=50., ra=1.375, dec=-1.2108)
 
 # Create the waveform_generator using a LAL BinaryBlackHole source function
-waveform_generator = tupak.waveform_generator.WaveformGenerator(
-    sampling_frequency=sampling_frequency, time_duration=time_duration,
-    frequency_domain_source_model=tupak.source.lal_binary_black_hole,
-    parameters=injection_parameters)
+waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=time_duration,
+                                                                sampling_frequency=sampling_frequency,
+                                                                frequency_domain_source_model=tupak.source.lal_binary_black_hole,
+                                                                parameters=injection_parameters)
 hf_signal = waveform_generator.frequency_domain_strain()
 
 # Set up interferometers.
diff --git a/examples/injection_examples/create_your_own_source_model.py b/examples/injection_examples/create_your_own_source_model.py
index 072b90e253ae1679df212109048fa79694bdc829..225a1495f8b3c68f916c808e9a68d00edc650bca 100644
--- a/examples/injection_examples/create_your_own_source_model.py
+++ b/examples/injection_examples/create_your_own_source_model.py
@@ -26,11 +26,10 @@ def sine_gaussian(f, A, f0, tau, phi0, geocent_time, ra, dec, psi):
 # We now define some parameters that we will inject and then a waveform generator
 injection_parameters = dict(A=1e-21, f0=10, tau=1, phi0=0, geocent_time=0,
                             ra=0, dec=0, psi=0)
-waveform_generator = tupak.waveform_generator.WaveformGenerator(
-    frequency_domain_source_model=sine_gaussian,
-    sampling_frequency=sampling_frequency,
-    time_duration=time_duration,
-    parameters=injection_parameters)
+waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=time_duration,
+                                                                sampling_frequency=sampling_frequency,
+                                                                frequency_domain_source_model=sine_gaussian,
+                                                                parameters=injection_parameters)
 hf_signal = waveform_generator.frequency_domain_strain()
 
 # Set up interferometers.
diff --git a/examples/injection_examples/how_to_specify_the_prior.py b/examples/injection_examples/how_to_specify_the_prior.py
index d1c5ceb169f77000d97509630b598ae09a06aca9..500cf91a9635a9c0034beb7e2e96db97570622bf 100644
--- a/examples/injection_examples/how_to_specify_the_prior.py
+++ b/examples/injection_examples/how_to_specify_the_prior.py
@@ -19,10 +19,10 @@ injection_parameters = dict(mass_1=36., mass_2=29., a_1=0.4, a_2=0.3, tilt_1=0.5
                             waveform_approximant='IMRPhenomPv2', reference_frequency=50., ra=1.375, dec=-1.2108)
 
 # Create the waveform_generator using a LAL BinaryBlackHole source function
-waveform_generator = tupak.waveform_generator.WaveformGenerator(
-    sampling_frequency=sampling_frequency, time_duration=time_duration,
-    frequency_domain_source_model=tupak.source.lal_binary_black_hole,
-    parameters=injection_parameters)
+waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=time_duration,
+                                                                sampling_frequency=sampling_frequency,
+                                                                frequency_domain_source_model=tupak.source.lal_binary_black_hole,
+                                                                parameters=injection_parameters)
 hf_signal = waveform_generator.frequency_domain_strain()
 
 # Set up interferometers.
diff --git a/examples/injection_examples/injection.py b/examples/injection_examples/injection.py
index 3ede362872dbdea9e115be95f6f786e4b32e0a59..23b669e5e53ba139237982fcad0b73bd49a76b09 100644
--- a/examples/injection_examples/injection.py
+++ b/examples/injection_examples/injection.py
@@ -15,9 +15,10 @@ def main():
     label = 'injection'
 
     # Create the waveform generator
-    waveform_generator = tupak.waveform_generator.WaveformGenerator(
-        frequency_domain_source_model=tupak.source.lal_binary_black_hole, sampling_frequency=2048, time_duration=4,
-        parameters={'reference_frequency': 50.0, 'waveform_approximant': 'IMRPhenomPv2'})
+    waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=4, sampling_frequency=2048,
+                                                                    frequency_domain_source_model=tupak.source.lal_binary_black_hole,
+                                                                    parameters={'reference_frequency': 50.0,
+                                                                                'waveform_approximant': 'IMRPhenomPv2'})
 
     # Define the prior
     # Merger time is some time in 2018, shame LIGO will never see it...
diff --git a/examples/injection_examples/marginalized_likelihood.py b/examples/injection_examples/marginalized_likelihood.py
index 3479a5f134820fbaeb44db4561544c61426229d8..7fcd0acee31f1c19b266007f6cc98d3e4e77d024 100644
--- a/examples/injection_examples/marginalized_likelihood.py
+++ b/examples/injection_examples/marginalized_likelihood.py
@@ -20,10 +20,10 @@ injection_parameters = dict(mass_1=36., mass_2=29., a_1=0.4, a_2=0.3, tilt_1=0.5
                             waveform_approximant='IMRPhenomPv2', reference_frequency=50., ra=1.375, dec=-1.2108)
 
 # Create the waveform_generator using a LAL BinaryBlackHole source function
-waveform_generator = tupak.waveform_generator.WaveformGenerator(
-    sampling_frequency=sampling_frequency, time_duration=time_duration,
-    frequency_domain_source_model=tupak.source.lal_binary_black_hole,
-    parameters=injection_parameters)
+waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=time_duration,
+                                                                sampling_frequency=sampling_frequency,
+                                                                frequency_domain_source_model=tupak.source.lal_binary_black_hole,
+                                                                parameters=injection_parameters)
 hf_signal = waveform_generator.frequency_domain_strain()
 
 # Set up interferometers.
diff --git a/examples/injection_examples/time_domain_source_model.py b/examples/injection_examples/time_domain_source_model.py
index 6f8d8c22cec28eb485e548eb92765c4d64bb207f..b9446703ed9e0b74747968aade1a0ff31f031b67 100644
--- a/examples/injection_examples/time_domain_source_model.py
+++ b/examples/injection_examples/time_domain_source_model.py
@@ -30,7 +30,9 @@ parameters['ra'] = 0
 parameters['dec'] = 0
 parameters['psi'] = 0
 
-wg = tupak.waveform_generator.WaveformGenerator(time_domain_source_model=time_domain_sine_gaussian, time_duration=2000, sampling_frequency=1000, parameters=parameters)
+wg = tupak.waveform_generator.WaveformGenerator(time_duration=2000, sampling_frequency=1000,
+                                                time_domain_source_model=time_domain_sine_gaussian,
+                                                parameters=parameters)
 wg.parameters = parameters
 plt.plot(wg.frequency_array, wg.frequency_domain_strain()['plus'])
 plt.xlim(4, 6)
diff --git a/examples/open_data_examples/GW150914.py b/examples/open_data_examples/GW150914.py
index 4d02714775da3c3d2cb08d2de2fc57ccea41bdbd..2f582f38785e93a2b22707f851460de387aeefb5 100644
--- a/examples/open_data_examples/GW150914.py
+++ b/examples/open_data_examples/GW150914.py
@@ -44,11 +44,12 @@ prior['luminosity_distance'] = tupak.prior.PowerLaw(
 # creates the frequency-domain strain. In this instance, we are using the
 # `lal_binary_black_hole model` source model. We also pass other parameters:
 # the waveform approximant and reference frequency.
-waveform_generator = tupak.waveform_generator.WaveformGenerator(
-    frequency_domain_source_model=tupak.source.lal_binary_black_hole,
-    sampling_frequency=interferometers[0].sampling_frequency,
-    time_duration=interferometers[0].duration,
-    parameters={'waveform_approximant': 'IMRPhenomPv2', 'reference_frequency': 50})
+waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=interferometers[0].duration,
+                                                                sampling_frequency=interferometers[
+                                                                    0].sampling_frequency,
+                                                                frequency_domain_source_model=tupak.source.lal_binary_black_hole,
+                                                                parameters={'waveform_approximant': 'IMRPhenomPv2',
+                                                                            'reference_frequency': 50})
 
 # In this step, we define the likelihood. Here we use the standard likelihood
 # function, passing it the data and the waveform generator.
diff --git a/examples/other_examples/alternative_likelihoods.py b/examples/other_examples/alternative_likelihoods.py
index 74acbc2776d9fb50817ed107a621a5ca3328dff3..ea0f1ed089237242240d5d327799da3d2ea9ce97 100644
--- a/examples/other_examples/alternative_likelihoods.py
+++ b/examples/other_examples/alternative_likelihoods.py
@@ -68,9 +68,9 @@ fig.savefig('{}/data.png'.format(outdir))
 # name doesn't make so much sense. But essentially this is an objects that
 # can generate a signal. We give it information on how to make the time series
 # and the model() we wrote earlier.
-waveform_generator = tupak.waveform_generator.WaveformGenerator(
-    sampling_frequency=sampling_frequency, time_duration=time_duration,
-    time_domain_source_model=model)
+waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=time_duration,
+                                                                sampling_frequency=sampling_frequency,
+                                                                time_domain_source_model=model)
 
 
 # Now lets instantiate a version of out Likelihood, giving it the time, data
diff --git a/test/make_standard_data.py b/test/make_standard_data.py
index 71f60fc90b7c697b64df804135676c80a52d17e2..67b395f44ecc750588c51867544d541350a43834 100644
--- a/test/make_standard_data.py
+++ b/test/make_standard_data.py
@@ -32,9 +32,8 @@ simulation_parameters = dict(
     psi=2.659
 )
 
-waveform_generator = WaveformGenerator(frequency_domain_source_model=tupak.source.lal_binary_black_hole,
-                                       sampling_frequency=sampling_frequency,
-                                       time_duration=time_duration,
+waveform_generator = WaveformGenerator(time_duration=time_duration, sampling_frequency=sampling_frequency,
+                                       frequency_domain_source_model=tupak.source.lal_binary_black_hole,
                                        parameters=simulation_parameters)
 
 signal = waveform_generator.frequency_domain_strain()
diff --git a/test/waveform_generator_tests.py b/test/waveform_generator_tests.py
index 5a1cf8dbfef1a23b1b170ecaa16e4318ed776020..460ef23b6a984436a282a85849170f94c1a0257b 100644
--- a/test/waveform_generator_tests.py
+++ b/test/waveform_generator_tests.py
@@ -17,8 +17,8 @@ def gaussian_frequency_domain_strain_2(frequency_array, a, m, s, ra, dec, geocen
 class TestWaveformGeneratorInstantiationWithoutOptionalParameters(unittest.TestCase):
 
     def setUp(self):
-        self.waveform_generator = tupak.waveform_generator.WaveformGenerator(
-            frequency_domain_source_model=gaussian_frequency_domain_strain)
+        self.waveform_generator = tupak.waveform_generator.WaveformGenerator(1, 4096,
+                                                                             frequency_domain_source_model=gaussian_frequency_domain_strain)
         self.simulation_parameters = dict(amplitude=1e-21, mu=100, sigma=1,
                                      ra=1.375,
                                      dec=-1.2108,
@@ -52,8 +52,8 @@ class TestWaveformGeneratorInstantiationWithoutOptionalParameters(unittest.TestC
 class TestParameterSetter(unittest.TestCase):
 
     def setUp(self):
-        self.waveform_generator = tupak.waveform_generator.WaveformGenerator(
-            frequency_domain_source_model=gaussian_frequency_domain_strain)
+        self.waveform_generator = tupak.waveform_generator.WaveformGenerator(1, 4096,
+                                                                             frequency_domain_source_model=gaussian_frequency_domain_strain)
         self.simulation_parameters = dict(amplitude=1e-21, mu=100, sigma=1,
                                      ra=1.375,
                                      dec=-1.2108,
@@ -91,8 +91,8 @@ class TestParameterSetter(unittest.TestCase):
 class TestSourceModelSetter(unittest.TestCase):
 
     def setUp(self):
-        self.waveform_generator = tupak.waveform_generator.WaveformGenerator(
-            frequency_domain_source_model=gaussian_frequency_domain_strain)
+        self.waveform_generator = tupak.waveform_generator.WaveformGenerator(1, 4096,
+                                                                             frequency_domain_source_model=gaussian_frequency_domain_strain)
         self.waveform_generator.frequency_domain_source_model = gaussian_frequency_domain_strain_2
         self.simulation_parameters = dict(amplitude=1e-21, mu=100, sigma=1,
                                      ra=1.375,
diff --git a/tupak/likelihood.py b/tupak/likelihood.py
index feb5f2dbda31f37c0ec9acf8dd8581c4967d89f4..17bc336a5cd595d186cd55ff4029a99d0b5fec56 100644
--- a/tupak/likelihood.py
+++ b/tupak/likelihood.py
@@ -150,12 +150,12 @@ def get_binary_black_hole_likelihood(interferometers):
     likelihood: tupak.likelihood.Likelihood
         The likelihood to pass to `run_sampler`
     """
-    waveform_generator = tupak.waveform_generator.WaveformGenerator(
-        frequency_domain_source_model=tupak.source.lal_binary_black_hole,
-        sampling_frequency=interferometers[0].sampling_frequency,
-        time_duration=interferometers[0].duration,
-        parameters={'waveform_approximant': 'IMRPhenomPv2',
-                    'reference_frequency': 50})
+    waveform_generator = tupak.waveform_generator.WaveformGenerator(time_duration=interferometers[0].duration,
+                                                                    sampling_frequency=interferometers[
+                                                                        0].sampling_frequency,
+                                                                    frequency_domain_source_model=tupak.source.lal_binary_black_hole,
+                                                                    parameters={'waveform_approximant': 'IMRPhenomPv2',
+                                                                                'reference_frequency': 50})
     likelihood = tupak.likelihood.Likelihood(
         interferometers, waveform_generator)
     return likelihood
diff --git a/tupak/waveform_generator.py b/tupak/waveform_generator.py
index 23c7726d728fb594423e1d59a12b0ba07982ba48..6bbd936868c0baf4d52898844eedce580b3dc874 100644
--- a/tupak/waveform_generator.py
+++ b/tupak/waveform_generator.py
@@ -23,8 +23,8 @@ class WaveformGenerator(object):
 
     """
 
-    def __init__(self, frequency_domain_source_model=None, time_domain_source_model=None, sampling_frequency=4096, time_duration=1,
-                 parameters=None):
+    def __init__(self, time_duration, sampling_frequency, frequency_domain_source_model=None,
+                 time_domain_source_model=None, parameters=None):
         self.time_duration = time_duration
         self.sampling_frequency = sampling_frequency
         self.frequency_domain_source_model = frequency_domain_source_model