diff --git a/TableParser.py b/TableParser.py
index 537f393..cffd880 100644
--- a/TableParser.py
+++ b/TableParser.py
@@ -25,29 +25,37 @@
         table = soup.find(id="day_main")
 
         hores = []
+        implicitClasses = []
+
         for h in range(8,22):
             newhour = ""
             if h < 10:
                 newhour += "0"
-            newhour += str(h);
+            newhour += str(h)
 
-            hores.append(newhour + ":00");
-            hores.append(newhour + ":30");
+            hores.append(newhour + ":00")
+            implicitClasses.append([])
+            hores.append(newhour + ":30")
+            implicitClasses.append([])
 
         p = re.compile(r"Aula (\S+) ?\(\d*\)", re.IGNORECASE)
 
+        horaActual = 0
         for hora in hores:
             td_hora = table.find(text=hora).findNext('td')
             column = 1
 
             while hora not in td_hora.get_text():
+                while column in implicitClasses[horaActual]:
+                    column += 1
 
                 classes = td_hora['class'];
                 if td_hora.has_attr('class') and not td_hora['class'][0] in self.EMPTY_CELL_CLASSES:
                     assignatura = td_hora.get_text().strip()
                     aulaRaw = table.find_all("th")[column].get_text().strip()
                     aula = p.match(aulaRaw).group(1)
-                    durada = int(td_hora.get("rowspan"))*30
+                    files = int(td_hora.get("rowspan"))
+                    durada = files*30
 
                     timeSplit = hora.split(':')
 
@@ -74,8 +82,14 @@
                             cursor2.execute("INSERT INTO classes (calendar_name, room, begins, ends) VALUES (?, ?, ?, ?)",
                                     assignatura, aula, begins, ends)
 
+                    for i in range(1, files - 1):
+                        if i < len(implicitClasses):
+                            implicitClasses[horaActual + i].append(column)
+
                 td_hora = td_hora.findNext('td')
                 column = column + 1
 
+            horaActual = horaActual + 1
+
         if db != None:
             db.commit()
