diff --git a/index.html b/index.html
index 073bb97..9dc52b4 100644
--- a/index.html
+++ b/index.html
@@ -30,49 +30,55 @@
         </nav>
         
         <section id="section-1" class="section">
-            <div class="field has-addons">
-                <p class="control">
-                    <button id="date-prev" class="button">&lt;</button>
-                </p>
-                <p class="control">
-                    <input id="date-selector" type="button" class="button">
-                </p>
-                <p class="control">
-                    <button id="date-next" class="button">&gt;</button>
-                </p>
-            </div>
-            <div class="field has-addons">
-                <p class="control">
-                    <button id="time-prev" class="button">&lt;</button>
-                </p>
-                <p class="control">
-                    <input id="time-selector" type="button" class="button" value="08:00 - 08:30">
-                </p>
-                <p class="control">
-                    <button id="time-next" class="button">&gt;</button>
-                </p>
-            </div><br>
+            <nav class="level">
+                <div class="level-item">
+                    <div class="field has-addons has-addons-centered">
+                        <p class="control">
+                        <button id="date-prev" class="button">&lt;</button>
+                        </p>
+                        <p class="control">
+                        <input id="date-selector" type="button" class="button">
+                        </p>
+                        <p class="control">
+                        <button id="date-next" class="button">&gt;</button>
+                        </p>
+                    </div>
+                </div>
+                <div class="level-item">
+                    <div class="field has-addons has-addons-centered">
+                        <p class="control">
+                        <button id="time-prev" class="button">&lt;</button>
+                        </p>
+                        <p class="control">
+                        <input id="time-selector" type="button" class="button" value="08:00 - 08:30">
+                        </p>
+                        <p class="control">
+                        <button id="time-next" class="button">&gt;</button>
+                        </p>
+                    </div>
+                </div>
+            </nav>
 
             <div id="subject-container" class="grid buttons"></div>
             <div id="no-subjects" class="is-hidden">No s'està impartint cap classe en aquests moments.</div>
             <div id="fme-maps-container" class="is-hidden">
-              <h4>Mapes de les aules de l'FME</h4>
-              <div class="maps">
-                <div class="map">
-                  <img src="img/ps.png">
-                  <div class="map--label">Planta <b>-1</b></div>
+                <h4>Plànols de les aules de l'FME</h4>
+                <div class="maps">
+                    <div class="map">
+                        <img src="img/ps.png">
+                        <div class="map--label">Planta <b>-1</b></div>
+                    </div>
+                    <div class="map">
+                        <img src="img/p0.png">
+                        <div class="map--label">Planta <b>0</b></div>
+                    </div>
+                    <div class="map">
+                        <img src="img/p1.png">
+                        <div class="map--label">Planta <b>1</b></div>
+                    </div>
                 </div>
-                <div class="map">
-                  <img src="img/p0.png">
-                  <div class="map--label">Planta <b>0</b></div>
-                </div>
-                <div class="map">
-                  <img src="img/p1.png">
-                  <div class="map--label">Planta <b>1</b></div>
-                </div>
-              </div>
             </div>
-            
+
         </section>
 
         <section id="section-2" class="section is-hidden">
@@ -104,7 +110,7 @@
 
         <section id="section-3" class="section is-hidden">
             <button class="button is-link is-light" onclick="switchSection('section-2')">Torna enrere (Lletra)</button>
-            
+
             <div id="number-container" class="buttons grid">
                 <button class="button" id="number-1" data-number="1">1</button>
                 <button class="button" id="number-2" data-number="2">2</button>
@@ -133,7 +139,7 @@
             <span id="letter-final">A</span><span id="number-final">1</span><br><br>
 
             <button id="send-button" class="button is-link is-large">Omple el formulari</button><br><br>
-            
+
             Hi ha errors? <br /><a class="button is-link is-light" href="https://docs.google.com/forms/d/e/1FAIpQLSfT9o287VqLyhwR8LPdloAQWhuqCgA3NfdhgP5vb9_sVQHL-g/viewform">Completa el formulari manualment</a>
 
 
diff --git a/js/build_page.js b/js/build_page.js
index a43cd5f..25acea3 100644
--- a/js/build_page.js
+++ b/js/build_page.js
@@ -113,6 +113,7 @@
 
 function buildSubjectContainer(classes, repeated) {
     document.getElementById("subject-container").innerHTML = "";
+    console.log(classes);
     for (var classe of classes) {
         var hora_inici = formatTime(new Date(parseInt(classe.begins)*1000));
         var hora_final = formatTime(new Date(parseInt(classe.ends)*1000));
@@ -151,6 +152,7 @@
 
         document.getElementById("subject-container").appendChild(classeDiv);
     }
+    console.log(document.getElementById("subject-container").innerHTML);
 
     var elements = document.getElementsByClassName("button");
     Array.from(elements).forEach(function(element) {
@@ -167,6 +169,7 @@
 function getDefaultTime() {
     var time = new Date();
     time.setSeconds(0);
+    time.setMilliseconds(0);
     if (time.getMinutes() < 30) time.setMinutes(0);
     else time.setMinutes(30);
     if (time.getHours() < MIN_HOUR) {
@@ -234,7 +237,8 @@
 }
 
 function fetchClasses() {
-    fetch(api_url + "getCurrentClasses", {
+    console.log(api_url + "getClassesInTime/" + current_time.getTime()/1000);
+    fetch(api_url + "getClassesInTime/" + current_time.getTime()/1000, {
         "mode": "cors",
         "credentials": "include"
     })
@@ -242,9 +246,13 @@
         .then(data => {
             if (data.payload.classes.length == 0) {
                 document.getElementById('no-subjects').classList.remove('is-hidden');
+                document.getElementById('subject-container').classList.add('is-hidden');
+                document.getElementById('fme-maps-container').classList.add('is-hidden');
             } else {
                 repeated_subjects = findRepeatedSubjects(data.payload.classes);
                 buildSubjectContainer(data.payload.classes, repeated_subjects);
+                document.getElementById('no-subjects').classList.add('is-hidden');
+                document.getElementById('subject-container').classList.remove('is-hidden');
                 document.getElementById('fme-maps-container').classList.remove('is-hidden');
             }
 
