diff --git a/validate_hashes.py b/validate_hashes.py
index 3ff58f241e7fb70b3908e68264fe601b0fe1bcd8..0bb409a995068ec6c0ce19f8f2e3c9bcab871d6e 100755
--- a/validate_hashes.py
+++ b/validate_hashes.py
@@ -43,6 +43,8 @@ def validateRecords():
 
 def validateHashes(recordList):
     #TODO: also sort this, perhaps execute on fullRecords or check against sorted commitIDs
+    #also TODO: collect data from all files before validating (changing paths src and crt)
+    #TODO: validate return-code!
     global errorCount, astDifferObjSameCount, missingCount
     #TODO: this method assumes that all records are from the same object file
     iterRecords = iter(recordList)
@@ -125,17 +127,16 @@ def buildFullRecordTo(pathToFullRecordFile):
     #        print "read full record from " + pathToFullRecordFile
     #else:
     fullRecord = buildFullRecord()
-    f = open(pathToFullRecordFile, 'w')
-    try:
-        f.write(repr(fullRecord) + "\n")
-    except MemoryError as me:
-        print me
-        raise
-    finally:
-        print time.ctime()
-        f.close()
-    print "built full record, wrote to " + pathToFullRecordFile
-
+#    f = open(pathToFullRecordFile, 'w')
+#    try:
+#        f.write(repr(fullRecord) + "\n")
+#    except MemoryError as me:
+#        print me
+#        raise
+#    finally:
+#        print time.ctime()
+#        f.close()
+#    print "built full record, wrote to " + pathToFullRecordFile
     return fullRecord
 
 
@@ -165,6 +166,14 @@ def buildFullRecord():
             
             objFilename = data['obj-file']
             del data['obj-file']
+
+            
+            # del everything I don't need
+            del data['return-code']
+            del data['element-hashes']
+            del data['project']
+            del data['processed-bytes']
+            del data['object-file-size']
             
             dataNewKeys = {tr(k): v for k, v in data.items()} 
             fullRecord[commitID][tr('files')][objFilename] = dataNewKeys
@@ -178,6 +187,40 @@ def getSortedCommitIDList(fullRecord):
 
 ################################################################################
 
+def plotBuildTimeGraph(measuredBuildTimes, realClangHashBuildTimes, optimalClangHashBuildTimes, optimalBuildTimes): # times in ms
+    fig, ax = plt.subplots()
+
+    ax.plot(measuredBuildTimes, label='measured build time')
+    ax.plot(realClangHashBuildTimes, label='real clang-hash build time')
+    ax.plot(optimalClangHashBuildTimes, label='optimal clang-hash build time')
+    ax.plot(optimalBuildTimes, label='optimal build time')
+
+    lgd = ax.legend(loc='center left', bbox_to_anchor=(1, 0.5)) # legend on the right
+
+    plt.xlabel('commits')
+    plt.ylabel('time [ms]')
+    fig.savefig(pathToRecords + '/../buildTimes.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
+
+
+def plotBuildTimeCompositionGraph(parseTimes, hashTimes, compileTimes, diffToBuildTime): # times in s
+    fig, ax = plt.subplots()
+    
+    ax.stackplot(np.arange(1, len(parseTimes)+1), # x axis
+                 [parseTimes, hashTimes, compileTimes, diffToBuildTime],
+                 colors=['#008800','#FF0000','#0000FF', '#000000'])
+    plt.xlim(1,len(parseTimes))
+    plt.xlabel('commits')
+    plt.ylabel('time [s]')
+    lgd = ax.legend([mpatches.Patch(color='#000000'),
+                     mpatches.Patch(color='#0000FF'),
+                     mpatches.Patch(color='#FF0000'),
+                     mpatches.Patch(color='#008800')],
+                    ['remaining build time','compile time', 'hash time', 'parse time'],
+                    loc='center left', bbox_to_anchor=(1, 0.5))
+    fig.savefig(pathToRecords + '/../buildTimeComposition.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
+
+
+
 def makeBuildTimeGraph(fullRecord):
     sortedCommitIDs = getSortedCommitIDList(fullRecord)
     iterCommits = iter(sortedCommitIDs)
@@ -250,36 +293,9 @@ def makeBuildTimeGraph(fullRecord):
 
         prevCommit = currentCommit
 
-    # plot build time graph
-
-    fig, ax = plt.subplots()
-
-    ax.plot(measuredBuildTimes, label='measured build time')
-    ax.plot(realClangHashBuildTimes, label='real clang-hash build time')
-    ax.plot(optimalClangHashBuildTimes, label='optimal clang-hash build time')
-    ax.plot(optimalBuildTimes, label='optimal build time')
-
-    lgd = ax.legend(loc='center left', bbox_to_anchor=(1, 0.5)) # legend on the right
-
-    plt.xlabel('commits')
-    plt.ylabel('time in ms')
-    fig.savefig(pathToRecords + '/../buildTimes.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
+    plotBuildTimeGraph(measuredBuildTimes, realClangHashBuildTimes, optimalClangHashBuildTimes, optimalBuildTimes)
 
-    # plot build time graph
-    x = np.arange(1, len(parseTimes)+1)
-
-    fig, ax = plt.subplots()
-    ax.stackplot(x, [parseTimes, hashTimes, compileTimes, diffToBuildTime], colors=['#008800','#FF0000','#0000FF', '#000000'])
-    plt.xlim(1,len(parseTimes))
-    plt.xlabel('commits')
-    plt.ylabel('time in s')
-    lgd = ax.legend([mpatches.Patch(color='#000000'),
-                     mpatches.Patch(color='#0000FF'),
-                     mpatches.Patch(color='#FF0000'),
-                     mpatches.Patch(color='#008800')],
-                    ['remaining build time','compile time', 'hash time', 'parse time'],
-                    loc='center left', bbox_to_anchor=(1, 0.5))
-    fig.savefig(pathToRecords + '/../buildTimeComposition.png', bbox_extra_artists=(lgd,), bbox_inches='tight')
+    plotBuildTimeCompositionGraph(parseTimes, hashTimes, compileTimes, diffToBuildTime)
 
 
 ################################################################################
@@ -341,7 +357,7 @@ def makeTimeHistograms(fullRecord):
     width = 0.7 * (bins[1] - bins[0])
     center = (bins[:-1] + bins[1:]) / 2
     fig, ax = plt.subplots()
-    plt.xlabel('time')
+    plt.xlabel('time [ms]')
     plt.ylabel('#files')
     ax.bar(center, hist, align='center', width=width)
     fig.savefig(pathToRecords + '/../parseTimeHistogram.png')#, bbox_extra_artists=(lgd,), bbox_inche    s='tight')
@@ -351,7 +367,7 @@ def makeTimeHistograms(fullRecord):
     width = 0.7 * (bins[1] - bins[0])
     center = (bins[:-1] + bins[1:]) / 2
     fig, ax = plt.subplots()
-    plt.xlabel('time')
+    plt.xlabel('time [ms]')
     plt.ylabel('#files')
     ax.bar(center, hist, align='center', width=width)
     fig.savefig(pathToRecords + '/../hashTimeHistogram.png')#, bbox_extra_artists=(lgd,), bbox_inche    s='tight')
@@ -361,7 +377,7 @@ def makeTimeHistograms(fullRecord):
     width = 0.7 * (bins[1] - bins[0])
     center = (bins[:-1] + bins[1:]) / 2
     fig, ax = plt.subplots()
-    plt.xlabel('time')
+    plt.xlabel('time [ms]')
     plt.ylabel('#files')
     ax.bar(center, hist, align='center', width=width)
     fig.savefig(pathToRecords + '/../compileTimeHistogram.png')#, bbox_extra_artists=(lgd,), bbox_inche    s='tight')
@@ -401,6 +417,9 @@ def makeChangesGraph(fullRecord):
                 if 'src/' + filename in prevFiles:
                     print "file %s changed place to src/" % filename
                     prevRecord = prevFiles['src/' + filename]
+                elif 'crt/' + filename in prevFiles:
+                    print "file %s changed place to crt/" % filename
+                    prevRecord = prevFiles['crt/' + filename]
                 else:
                     print "ERROR, MISSING FILE: %s not in prev, continue with next commit" % filename
                     continue