diff --git a/Dockerfile b/Dockerfile
index 9f026d5600bf8679b858e3c0641dba14eb106d6b..4977d5af0485c7ecabaeb787e8f933d36bc70cb6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -19,7 +19,6 @@ RUN apt-get install --assume-yes gcc \
         libxml2-dev \
         libsqlite3-dev \
         python-glue \
-        python-pylal \
         python-voeventlib
 
 # Install npm, bower, bower_components
diff --git a/gracedb/events/serialize.py b/gracedb/events/serialize.py
index 3cba1e6f1db3589e0247a8b32ba3dce3f1253280..e36d9a126ed2973ce58f479cdb6eb1c100eb5d41 100644
--- a/gracedb/events/serialize.py
+++ b/gracedb/events/serialize.py
@@ -3,7 +3,6 @@
 from math import log
 from time import gmtime, strftime
 
-from pylal import Fr
 from glue.lal import LIGOTimeGPS
 from glue.ligolw import ligolw
 from glue.ligolw import table
@@ -120,137 +119,6 @@ def get_ifos_for_cwb(cwb_ifos):
 #
 ##############################################################################
 
-def populate_inspiral_tables(MBTA_frame, set_keys = MBTA_set_keys, \
-                             event_id_dict = insp_event_id_dict):
-  """
-  create xml file and populate the SnglInspiral and CoincInspiral tables from a
-  coinc .gwf file from MBTA
-  xmldoc: xml file to append the tables to
-  MBTA_frame: frame file to get info about triggers from
-  set_keys: columns in the SnglInspiral Table to set
-  process_id: process_id
-  event_id_dict: {ifo:event_id} dictionary to assign event_id's
-  coinc_event_id: coinc_event_id
-  detectors: detectors participating in the coinc
-
-  returns xmldoc and contents of the comment field
-  """
-  #initialize xml document
-  xmldoc = ligolw.Document()
-  xmldoc.appendChild(ligolw.LIGO_LW())
-  #dictionaries to store about individual triggers
-  end_time = {}
-  snr = {}
-  mass1 = {}
-  mass2 = {}
-  Deff = {}
-  mchirp = {}
-  eta = {}
-
-  #extract the information from the frame file
-  events = Fr.frgetevent(MBTA_frame)
-  #get the ifos from the event name
-  for event in events:
-    if 'MbtaHLV' in event['name']:
-      detectors = H1L1V1_detlist
-    elif 'MbtaHL' in event['name']:
-      detectors = H1L1_detlist
-    elif 'MbtaHV' in event['name']:
-      detectors = H1V1_detlist
-    elif 'MbtaH' in event['name']:
-      detectors = H1_detlist
-    elif 'MbtaLV' in event['name']:
-      detectors = L1V1_detlist
-    elif 'MbtaL' in event['name']:
-      detectors = L1_detlist
-    elif 'MbtaV' in event['name']:
-      detectors = V1_detlist
-    else:
-      raise ValueError, "Invalid FrEvent name"
-
-    log_data = event['comment'] + '\n'
-    try:
-      far = 1/(float(event['IFAR_year'])*365.0*24*60*60)
-    except KeyError:
-        far = None
-    for ifo in detectors:
-      end_time[ifo] = LIGOTimeGPS(event[ifo+':end_time'])
-      snr[ifo] = float(event[ifo+':SNR'])
-      mass1[ifo] = float(event[ifo+':mass1'])
-      mass2[ifo] = float(event[ifo+':mass2'])
-      mchirp[ifo], eta[ifo] = compute_mchirp_eta(mass1[ifo],mass2[ifo])
-      Deff[ifo] = float(event[ifo+':eff_distance'])
-
-  #fill the SnglInspiralTable
-  sin_table = lsctables.New(lsctables.SnglInspiralTable)
-  xmldoc.childNodes[0].appendChild(sin_table)
-  process_id = lsctables.ProcessTable.get_next_id()
-  for ifo in detectors:
-    row = sin_table.RowType()
-    row.ifo = ifo
-    row.search = 'MBTA'
-    row.end_time = end_time[ifo].seconds
-    row.end_time_ns = end_time[ifo].nanoseconds
-    row.mass1 = mass1[ifo]
-    row.mass2 = mass2[ifo]
-    row.mchirp = mchirp[ifo]
-    row.mtotal = mass1[ifo] + mass2[ifo]
-    row.eta = eta[ifo]
-    row.snr = snr[ifo]
-    row.eff_distance = Deff[ifo]
-    row.event_id = event_id_dict[ifo]
-    row.process_id = process_id
-    row.channel = ''
-    #zero out the rest of the columns
-    #should work in chi2 and chi2cut 
-    for key in sin_table.validcolumns.keys():
-      if key not in set_keys:
-        setattr(row,key,None)
-    sin_table.append(row)
-
-  #CoincInspiralTable
-  #using the conventions found in:
-  #https://www.lsc-group.phys.uwm.edu/ligovirgo/cbcnote/S6Plan/ 
-  #090505160219S6PlanningNotebookCoinc_and_Experiment_Tables_ihope_implementation?
-  #highlight=%28coinc%29|%28table%29
-  
-  temp_data_loc = None
-
-  if len(detectors) < 2:
-    return xmldoc, log_data, temp_data_loc
-    
-  #coinc_event_id = coinc_event_id_base + str(UID)
-
-  #this next line is to guard against future violence to the table definitions
-  cintcols = ['coinc_event_id','ifos','end_time','end_time_ns','mass','mchirp','snr','false_alarm_rate','combined_far']
-  cin_table = lsctables.New(lsctables.CoincInspiralTable,columns=cintcols)
-  xmldoc.childNodes[0].appendChild(cin_table)
-  row = cin_table.RowType()
-  row.set_ifos(detectors)
-  cid = lsctables.CoincTable.get_next_id()
-  row.coinc_event_id = cid
-  representative_detector = detectors[0]
-  row.end_time = end_time[representative_detector].seconds
-  row.end_time_ns = end_time[representative_detector].nanoseconds
-  row.mass = (sum(mass1.values()) + sum(mass2.values()))/len(detectors)
-  row.mchirp = sum(mchirp.values())/len(detectors)
-  #the snr here is really the snr NOT effective snr
-  row.snr = pow(sum([x*x for x in snr.values()]),0.5)
-  if far is not None:
-      #far is triggers in Hz
-      row.combined_far = float(far)
-  else:
-      row.combined_far = None
-  row.false_alarm_rate = None
-
-  cin_table.append(row)
-
-
-  xmldoc = populate_coinc_tables(xmldoc,cid,insp_event_id_dict,\
-                                 InspiralCoincDef,detectors)
-    
-  return xmldoc, log_data, temp_data_loc
-
 def populate_omega_tables(datafile, set_keys = Omega_set_keys):
   """
   """
@@ -421,20 +289,3 @@ def populate_coinc_tables(xmldoc, coinc_event_id, event_id_dict,\
     coinc_def_table.append(row)
     
     return xmldoc 
-  
-
-##############################################################################
-#
-#          usage example
-#
-##############################################################################
-
-#here's how it works for inspirals
-#populate the tables
-#xmldoc, log_data, temp_data_loc = populate_inspiral_tables("MbtaFake-930909680-16.gwf")
-#write the output
-#write_output_files('.', xmldoc, log_data)
-
-#here's how it works for bursts
-#xmldoc, log_data, temp_data_loc = populate_burst_tables("initial.data")
-#write_output_files('.', final_xmldoc, log_data)
diff --git a/gracedb/events/translator.py b/gracedb/events/translator.py
index 88bc7911f5c27023195cc422baf645ea2b444c56..a0a7f1ca90d55868b64f86ff7110ba76ed133400 100644
--- a/gracedb/events/translator.py
+++ b/gracedb/events/translator.py
@@ -11,8 +11,7 @@ from glue.ligolw.lsctables import CoincInspiralTable, SnglInspiralTable, use_in
 from glue.ligolw.lsctables import SimInspiralTable, MultiBurstTable, CoincTable
 from glue.ligolw.ligolw import LIGOLWContentHandler
 
-from .serialize import populate_inspiral_tables, populate_omega_tables, \
-    write_output_files
+from .serialize import populate_omega_tables, write_output_files
 
 from VOEventLib.Vutil import parse, getWhereWhen, findParam, getParamNames
 from core.time_utils import isoToGps, isoToGpsFloat