diff --git a/examples/open_data_examples/GW150914.py b/examples/open_data_examples/GW150914.py
index bac83cf66631f5221582c932abc6701305b0fbdf..07a31db0209fdac49ecaa46ba7a2411b05d0c9bc 100644
--- a/examples/open_data_examples/GW150914.py
+++ b/examples/open_data_examples/GW150914.py
@@ -36,9 +36,7 @@ prior = tupak.gw.prior.BBHPriorSet(filename='GW150914.prior')
 # 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.WaveformGenerator(duration=interferometers.duration,
-                                             sampling_frequency=interferometers.sampling_frequency,
-                                             frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole,
+waveform_generator = tupak.WaveformGenerator(frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole,
                                              waveform_arguments={'waveform_approximant': 'IMRPhenomPv2',
                                                                  'reference_frequency': 50})
 
diff --git a/tupak/gw/likelihood.py b/tupak/gw/likelihood.py
index 5c87f0d5e110c527b1c8e105d26f984b37737a8e..3b197d9f17ae001a908c6bc7b53564f32d3c15c6 100644
--- a/tupak/gw/likelihood.py
+++ b/tupak/gw/likelihood.py
@@ -62,6 +62,7 @@ class GravitationalWaveTransient(likelihood.Likelihood):
         self.distance_marginalization = distance_marginalization
         self.phase_marginalization = phase_marginalization
         self.prior = prior
+        self._check_set_duration_and_sampling_frequency_of_waveform_generator()
 
         if self.distance_marginalization:
             self.check_prior_is_set()
@@ -80,6 +81,27 @@ class GravitationalWaveTransient(likelihood.Likelihood):
         if self.time_marginalization:
             self.check_prior_is_set()
 
+    def _check_set_duration_and_sampling_frequency_of_waveform_generator(self):
+        """ Check the waveform_generator has the same duration and
+        sampling_frequency as the interferometers. If they are unset, then
+        set them, if they differ, raise an error
+        """
+
+        attributes = ['duration', 'sampling_frequency', 'start_time']
+        for attr in attributes:
+            wfg_attr = getattr(self.waveform_generator, attr)
+            ifo_attr = getattr(self.interferometers, attr)
+            if wfg_attr is None:
+                logging.debug(
+                    "The waveform_generator {} is None. Setting from the "
+                    "provided interferometers.".format(attr))
+                setattr(self.waveform_generator, attr, ifo_attr)
+            elif wfg_attr != ifo_attr:
+                logging.warning(
+                    "The waveform_generator {} is not equal to that of the "
+                    "provided interferometers. Overwriting the "
+                    "waveform_generator.".format(attr))
+
     def check_prior_is_set(self):
         if self.prior is None:
             raise ValueError("You can't use a marginalized likelihood without specifying a prior")
diff --git a/tupak/gw/waveform_generator.py b/tupak/gw/waveform_generator.py
index e5618ac4ddfa3d8c1373f08adb84a6940e4ee372..fdee84a20641452a1476f98e56f56e16cfeedfab 100644
--- a/tupak/gw/waveform_generator.py
+++ b/tupak/gw/waveform_generator.py
@@ -6,7 +6,7 @@ import numpy as np
 
 class WaveformGenerator(object):
 
-    def __init__(self, duration, sampling_frequency, start_time=0, frequency_domain_source_model=None,
+    def __init__(self, duration=None, sampling_frequency=None, start_time=0, frequency_domain_source_model=None,
                  time_domain_source_model=None, parameters=None, parameter_conversion=None,
                  non_standard_sampling_parameter_keys=None,
                  waveform_arguments=None):
@@ -14,9 +14,9 @@ class WaveformGenerator(object):
 
     Parameters
     ----------
-    sampling_frequency: float
+    sampling_frequency: float, optional
         The sampling frequency
-    duration: float
+    duration: float, optional
         Time duration of data
     start_time: float, optional
         Starting time of the time array