diff --git a/tools/internal_test.py b/tools/internal_test.py
index e267763..ee7a8323 100755
--- a/tools/internal_test.py
+++ b/tools/internal_test.py
@@ -38,6 +38,8 @@
 import utils
 import run_on_app
 
+import youtube_data
+
 # How often the bot/tester should check state
 PULL_DELAY = 30
 TEST_RESULT_DIR = 'internal'
@@ -74,7 +76,7 @@
     },
     {
         'app': 'youtube',
-        'version': '12.22',
+        'version': youtube_data.LATEST_VERSION,
         'find-xmx-min': 750,
         'find-xmx-max': 1150,
         'find-xmx-range': 32,
diff --git a/tools/run_on_app.py b/tools/run_on_app.py
index 60cd4f1..c775aa0 100755
--- a/tools/run_on_app.py
+++ b/tools/run_on_app.py
@@ -396,7 +396,7 @@
     version = options.version or '20180926'
     data = nest_data
   elif options.app == 'youtube':
-    version = options.version or '12.22'
+    version = options.version or youtube_data.LATEST_VERSION
     data = youtube_data
   elif options.app == 'chrome':
     version = options.version or '180917'
diff --git a/tools/run_proguard_dx_on_app.py b/tools/run_proguard_dx_on_app.py
deleted file mode 100755
index bb1d72a..0000000
--- a/tools/run_proguard_dx_on_app.py
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by a
-# BSD-style license that can be found in the LICENSE file.
-
-# Run ProGuard and the DX (= D8) tool on GmsCore V10.
-
-from __future__ import print_function
-from glob import glob
-from os import makedirs
-from os.path import exists, join, splitext
-from subprocess import check_call
-import argparse
-import fnmatch
-import gmscore_data
-import jdk
-import os
-import stat
-import sys
-import time
-
-import gmail_data
-import gmscore_data
-import golem
-import proguard
-import utils
-import youtube_data
-
-APPS = ['gmscore', 'youtube']
-DX_JAR = join(utils.REPO_ROOT, 'tools', 'linux', 'dx', 'framework', 'dx.jar')
-
-def parse_arguments(argv):
-  parser = argparse.ArgumentParser(
-      description = 'Run ProGuard and the DX tool on GmsCore V10.')
-  parser.add_argument('--app', required = True, choices = APPS)
-  parser.add_argument('--out',
-      help = 'Output directory for the DX tool.',
-      default = os.getcwd())
-  parser.add_argument('--golem',
-      help = 'Link in third party dependencies.',
-      default = False,
-      action = 'store_true')
-  parser.add_argument('--print-runtimeraw',
-      metavar = 'BENCHMARKNAME',
-      help = 'Print the line \'<BENCHMARKNAME>(RunTimeRaw): <elapsed>' +
-             ' ms\' at the end where <elapsed> is the elapsed time in' +
-             ' milliseconds.')
-  parser.add_argument('--print-memoryuse',
-      metavar='BENCHMARKNAME',
-      help='Print the line \'<BENCHMARKNAME>(MemoryUse):' +
-           ' <mem>\' at the end where <mem> is the peak' +
-           ' peak resident set size (VmHWM) in bytes.')
-  parser.add_argument('--print-dexsegments',
-      metavar = 'BENCHMARKNAME',
-      help = 'Print the sizes of individual dex segments as ' +
-          '\'<BENCHMARKNAME>-<segment>(CodeSize): <bytes>\'')
-  return parser.parse_args(argv)
-
-def Main(argv):
-  options = parse_arguments(argv)
-  if options.golem:
-    golem.link_third_party()
-  utils.check_java_version()
-  outdir = options.out
-
-  if options.app == 'gmscore':
-    version = 'v10'
-    data = gmscore_data
-    base = data.V10_BASE
-  elif options.app == 'youtube':
-    version = '12.22'
-    data = youtube_data
-    base = data.V12_22_BASE
-  else:
-    raise Exception('Unexpected')
-
-
-  args = ['-forceprocessing']
-
-  if not outdir.endswith('.zip') and not outdir.endswith('.jar') \
-      and not exists(outdir):
-    makedirs(outdir)
-
-
-  values_deploy = data.VERSIONS[version]['deploy']
-  values_proguarded = data.VERSIONS[version]['proguarded']
-  assert 'pgconf' in values_deploy
-
-  for pgconf in values_deploy['pgconf']:
-    args.extend(['@' + pgconf])
-
-  # find seeds file
-  inputs = data.VERSIONS[version]['proguarded']['inputs']
-  assert len(inputs) == 1
-  basename_wo_ext = splitext(os.path.basename(inputs[0]))[0]
-  seeds_filename = basename_wo_ext + '.seeds'
-
-  seeds_files = []
-  for root, dirnames, filenames in os.walk(join(base, 'blaze-out')):
-    for filename in fnmatch.filter(filenames, seeds_filename):
-        seeds_files.append(os.path.join(root, filename))
-  assert len(seeds_files) == 1
-
-  seeds_path = seeds_files[0]
-  proguarded_jar_path = splitext(seeds_path)[0] + '.jar'
-
-  # Remove write-protection from seeds file. The seeds file is an output of
-  # ProGuard so it aborts if this is not writeable.
-  st = os.stat(seeds_path)
-  os.chmod(seeds_path,
-      st.st_mode | stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH)
-
-  t0 = time.time()
-
-  proguard_memoryuse = None
-
-  with utils.TempDir() as temp:
-    track_memory_file = None
-    if options.print_memoryuse:
-      track_memory_file = join(temp, utils.MEMORY_USE_TMP_FILE)
-    proguard.run(
-        args,
-        version='pg_internal',
-        track_memory_file = track_memory_file,
-        stdout=open(os.devnull, 'w'))
-    if options.print_memoryuse:
-      proguard_memoryuse = utils.grep_memoryuse(track_memory_file)
-
-  # run dex on the result
-  jar = DX_JAR
-
-  with utils.TempDir() as temp:
-    track_memory_file = None
-    cmd = []
-    if options.print_memoryuse:
-      track_memory_file = join(temp, utils.MEMORY_USE_TMP_FILE)
-      cmd.extend(['tools/track_memory.sh', track_memory_file])
-    cmd.extend([jdk.GetJavaExecutable(), '-jar', jar, '--multi-dex',
-        '--output=' + outdir])
-    if 'min-api' in values_proguarded:
-      cmd.append('--min-sdk-version=' + values_proguarded['min-api'])
-    cmd.extend(['--dex', proguarded_jar_path])
-    utils.PrintCmd(cmd);
-    check_call(cmd)
-    if options.print_memoryuse:
-      dx_memoryuse = utils.grep_memoryuse(track_memory_file)
-      print('{}(MemoryUse): {}'
-          .format(options.print_memoryuse,
-              max(proguard_memoryuse, dx_memoryuse)))
-
-  if options.print_runtimeraw:
-    print('{}(RunTimeRaw): {} ms'
-        .format(options.print_runtimeraw, 1000.0 * (time.time() - t0)))
-
-  if options.print_dexsegments:
-    dex_files = glob(os.path.join(outdir, '*.dex'))
-    utils.print_dexsegments(options.print_dexsegments, dex_files)
-
-if __name__ == '__main__':
-  sys.exit(Main(sys.argv[1:]))
diff --git a/tools/run_proguard_dx_on_gmscore.py b/tools/run_proguard_dx_on_gmscore.py
deleted file mode 100755
index 5a6e42a..0000000
--- a/tools/run_proguard_dx_on_gmscore.py
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by a
-# BSD-style license that can be found in the LICENSE file.
-
-# Run ProGuard and the DX or CompatDX (= D8) tool on GmsCore V10.
-
-import sys
-
-import run_proguard_dx_on_app
-
-if __name__ == '__main__':
-  sys.exit(run_proguard_dx_on_app.Main(sys.argv[1:] + ['--app', 'gmscore']))
diff --git a/tools/youtube_data.py b/tools/youtube_data.py
index 04d9e1f..d12cfb6 100644
--- a/tools/youtube_data.py
+++ b/tools/youtube_data.py
@@ -2,7 +2,6 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 
-import glob
 import os
 import utils
 
@@ -10,256 +9,20 @@
 ANDROID_L_API = '21'
 BASE = os.path.join(utils.THIRD_PARTY, 'youtube')
 
-V12_10_BASE = os.path.join(BASE, 'youtube.android_12.10')
-V12_10_PREFIX = os.path.join(V12_10_BASE, 'YouTubeRelease')
-
-V12_17_BASE = os.path.join(BASE, 'youtube.android_12.17')
-V12_17_PREFIX = os.path.join(V12_17_BASE, 'YouTubeRelease')
-
-V12_22_BASE = os.path.join(BASE, 'youtube.android_12.22')
-V12_22_PREFIX = os.path.join(V12_22_BASE, 'YouTubeRelease')
-
-V13_37_BASE = os.path.join(BASE, 'youtube.android_13.37')
-V13_37_PREFIX = os.path.join(V13_37_BASE, 'YouTubeRelease')
-
-V14_19_BASE = os.path.join(BASE, 'youtube.android_14.19')
-V14_19_PREFIX = os.path.join(V14_19_BASE, 'YouTubeRelease')
-
-V14_44_BASE = os.path.join(BASE, 'youtube.android_14.44')
-V14_44_PREFIX = os.path.join(V14_44_BASE, 'YouTubeRelease')
-
-V15_08_BASE = os.path.join(BASE, 'youtube.android_15.08')
-V15_08_PREFIX = os.path.join(V15_08_BASE, 'YouTubeRelease')
-
-V15_09_BASE = os.path.join(BASE, 'youtube.android_15.09')
-V15_09_PREFIX = os.path.join(V15_09_BASE, 'YouTubeRelease')
-
 V15_33_BASE = os.path.join(BASE, 'youtube.android_15.33')
 V15_33_PREFIX = os.path.join(V15_33_BASE, 'YouTubeRelease')
 
 V16_12_BASE = os.path.join(BASE, 'youtube.android_16.12')
 V16_12_PREFIX = os.path.join(V16_12_BASE, 'YouTubeRelease')
 
-# NOTE: we always use android.jar for SDK v25, later we might want to revise it
-#       to use proper android.jar version for each of youtube version separately.
-ANDROID_JAR = utils.get_android_jar(25)
+LATEST_VERSION = '16.12'
 
 VERSIONS = {
-  '12.10': {
-    'dex' : {
-      'inputs': [os.path.join(V12_10_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V12_10_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      'inputs': ['%s_deploy.jar' % V12_10_PREFIX],
-      'pgconf': ['%s_proguard.config' % V12_10_PREFIX,
-                 '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-                 utils.IGNORE_WARNINGS_RULES],
-      'min-api' : ANDROID_L_API,
-    }
-    # The 'proguarded' version cannot be handled by D8/R8 because there are
-    # parameter annotations for parameters that do not exist, which is not
-    # handled gracefully by ASM (see b/116089492).
-    #'proguarded' : {
-    #  'inputs': ['%s_proguard.jar' % V12_10_PREFIX],
-    #  'pgmap': '%s_proguard.map' % V12_10_PREFIX,
-    #  'min-api' : ANDROID_L_API,
-    #}
-  },
-  '12.17': {
-    'dex' : {
-      'inputs': [os.path.join(V12_17_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V12_17_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      'inputs': ['%s_deploy.jar' % V12_17_PREFIX],
-      'pgconf': ['%s_proguard.config' % V12_17_PREFIX,
-                 '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-                 utils.IGNORE_WARNINGS_RULES],
-      'min-api' : ANDROID_L_API,
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V12_17_PREFIX],
-      'pgmap': '%s_proguard.map' % V12_17_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
-  '12.22': {
-    'dex' : {
-      'inputs': [os.path.join(V12_22_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V12_22_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      'inputs': ['%s_deploy.jar' % V12_22_PREFIX],
-      'pgconf': [
-          '%s_proguard.config' % V12_22_PREFIX,
-          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-          utils.IGNORE_WARNINGS_RULES],
-      'maindexrules' : [
-          os.path.join(V12_22_BASE, 'mainDexClasses.rules'),
-          os.path.join(V12_22_BASE, 'main-dex-classes-release.cfg'),
-          os.path.join(V12_22_BASE, 'main_dex_YouTubeRelease_proguard.cfg')],
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V12_22_PREFIX],
-      'pgmap': '%s_proguard.map' % V12_22_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
-  '13.37': {
-    'dex' : {
-      'inputs': [os.path.join(V13_37_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V13_37_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      'inputs': ['%s_deploy.jar' % V13_37_PREFIX],
-      'pgconf': [
-          '%s_proguard.config' % V13_37_PREFIX,
-          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-          utils.IGNORE_WARNINGS_RULES],
-      # Build for native multi dex, as Currently R8 cannot meet the main-dex
-      # constraints.
-      #'maindexrules' : [
-      #    os.path.join(V13_37_BASE, 'mainDexClasses.rules'),
-      #    os.path.join(V13_37_BASE, 'main-dex-classes-release-optimized.cfg'),
-      #    os.path.join(V13_37_BASE, 'main_dex_YouTubeRelease_proguard.cfg')],
-      'min-api' : ANDROID_L_API,
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V13_37_PREFIX],
-      'pgmap': '%s_proguard.map' % V13_37_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
-  '14.19': {
-    'dex' : {
-      'inputs': [os.path.join(V14_19_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V14_19_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      'inputs': ['%s_deploy.jar' % V14_19_PREFIX],
-      'pgconf': [
-          '%s_proguard.config' % V14_19_PREFIX,
-          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-          utils.IGNORE_WARNINGS_RULES],
-      'maindexrules' : [
-          os.path.join(V14_19_BASE, 'mainDexClasses.rules'),
-          os.path.join(V14_19_BASE, 'main-dex-classes-release-optimized.pgcfg'),
-          os.path.join(V14_19_BASE, 'main_dex_YouTubeRelease_proguard.cfg')],
-      'min-api' : ANDROID_H_MR2_API,
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V14_19_PREFIX],
-      'pgmap': '%s_proguard.map' % V14_19_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
-  '14.44': {
-    'dex' : {
-      'inputs': [os.path.join(V14_44_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V14_44_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      # When -injars and -libraryjars are used for specifying inputs library
-      # sanitization is on by default. For this version of YouTube -injars and
-      # -libraryjars are not used, but library sanitization is still required.
-      'sanitize_libraries': True,
-      'inputs': ['%s_deploy.jar' % V14_44_PREFIX],
-      'libraries' : [os.path.join(V14_44_BASE, 'legacy_YouTubeRelease_combined_library_jars.jar')],
-      'pgconf': [
-          '%s_proguard.config' % V14_44_PREFIX,
-          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-          utils.IGNORE_WARNINGS_RULES],
-      'maindexrules' : [
-          os.path.join(V14_44_BASE, 'mainDexClasses.rules'),
-          os.path.join(V14_44_BASE, 'main-dex-classes-release-optimized.pgcfg'),
-          os.path.join(V14_44_BASE, 'main_dex_YouTubeRelease_proguard.cfg')],
-      'min-api' : ANDROID_H_MR2_API,
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V14_44_PREFIX],
-      'pgmap': '%s_proguard.map' % V14_44_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
-  '15.08': {
-    'dex' : {
-      'inputs': [os.path.join(V15_08_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V15_08_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      # When -injars and -libraryjars are used for specifying inputs library
-      # sanitization is on by default. For this version of YouTube -injars and
-      # -libraryjars are not used, but library sanitization is still required.
-      'sanitize_libraries': True,
-      'inputs': ['%s_deploy.jar' % V15_08_PREFIX],
-      'libraries' : [os.path.join(V15_08_BASE, 'legacy_YouTubeRelease_combined_library_jars.jar')],
-      'pgconf': [
-          '%s_proguard.config' % V15_08_PREFIX,
-          '%s_proto_safety.pgcfg' % V15_08_PREFIX,
-          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-          utils.IGNORE_WARNINGS_RULES],
-      'maindexrules' : [
-          os.path.join(V15_08_BASE, 'mainDexClasses.rules'),
-          os.path.join(V15_08_BASE, 'main-dex-classes-release-optimized.pgcfg'),
-          os.path.join(V15_08_BASE, 'main_dex_YouTubeRelease_proguard.cfg')],
-      'min-api' : ANDROID_H_MR2_API,
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V15_08_PREFIX],
-      'pgmap': '%s_proguard.map' % V15_08_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
-  '15.09': {
-    'dex' : {
-      'inputs': [os.path.join(V15_09_BASE, 'YouTubeRelease_unsigned.apk')],
-      'pgmap': '%s_proguard.map' % V15_09_PREFIX,
-      'libraries' : [ANDROID_JAR],
-      'min-api' : ANDROID_L_API,
-    },
-    'deploy' : {
-      # When -injars and -libraryjars are used for specifying inputs library
-      # sanitization is on by default. For this version of YouTube -injars and
-      # -libraryjars are not used, but library sanitization is still required.
-      'sanitize_libraries': True,
-      'inputs': ['%s_deploy.jar' % V15_09_PREFIX],
-      'libraries' : [os.path.join(V15_09_BASE, 'legacy_YouTubeRelease_combined_library_jars.jar')],
-      'pgconf': [
-          '%s_proguard.config' % V15_09_PREFIX,
-          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
-          utils.IGNORE_WARNINGS_RULES],
-      'maindexrules' : [
-          os.path.join(V15_09_BASE, 'mainDexClasses.rules'),
-          os.path.join(V15_09_BASE, 'main-dex-classes-release-optimized.pgcfg'),
-          os.path.join(V15_09_BASE, 'main_dex_YouTubeRelease_proguard.cfg')],
-      'min-api' : ANDROID_H_MR2_API,
-    },
-    'proguarded' : {
-      'inputs': ['%s_proguard.jar' % V15_09_PREFIX],
-      'pgmap': '%s_proguard.map' % V15_09_PREFIX,
-      'min-api' : ANDROID_L_API,
-    }
-  },
   '15.33': {
     'dex' : {
       'inputs': [os.path.join(V15_33_BASE, 'YouTubeRelease_unsigned.apk')],
       'pgmap': '%s_proguard.map' % V15_33_PREFIX,
-      'libraries' : [ANDROID_JAR],
+      'libraries' : [utils.get_android_jar(25)],
       'min-api' : ANDROID_L_API,
     },
     'deploy' : {
