Index: reactapp/src/Components/Logout.js
===================================================================
--- reactapp/src/Components/Logout.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/Logout.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -3,4 +3,5 @@
 import Cookies from "js-cookie";
 import { LogoutButton } from "./Styled/UserDetails.style";
+import { Navigate } from "react-router-dom";
 
 function Logout() {
@@ -12,5 +13,5 @@
   };
 
-  return <LogoutButton onClick={handleLogout} style={{color:"black"}}>Одјави се</LogoutButton>;
+  return <LogoutButton onClick={handleLogout}>Одјави се</LogoutButton>;
 }
 
Index: reactapp/src/Components/OpinionTree.js
===================================================================
--- reactapp/src/Components/OpinionTree.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/OpinionTree.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -3,4 +3,5 @@
   OpinionCardContent,
   OpinionCardContentTime,
+  OpinionCardContentTitle,
   OpinionReplyCard,
   OpinionReplyCardContent,
@@ -13,6 +14,5 @@
 import AuthApi from "../api/AuthApi";
 import { useNavigate } from "react-router-dom";
-import { useContext, useState, useEffect } from "react";
-import JSOG from "jsog";
+import { useContext, useState } from "react";
 import {
   Modal,
@@ -26,60 +26,63 @@
 import axios from "../api/axios";
 
-const OpinionTree = ({professor, relatedOpinions}) => {
+function OpinionTree({ professor, user, userLoaded }) {
   var renderedOpinionIds = [];
   var postCount; // za da ne go pokazuva ispod postot
 
+  let navigate = useNavigate();
   const { auth, setAuth } = useContext(AuthApi);
-  let navigate = useNavigate();
-
-  const [replyModalDisplay, setReplyModalDisplay] = useState("none");
+
+  let [replyModalDisplay, setReplyModalDisplay] = useState("none");
   const [replyContent, setReplyContent] = useState("");
-  const [postForReplyModal, setPostForReplyModal] = useState(null);
-  const [reportModalDisplay, setReportModalDisplay] = useState("none");
-  const [reportContent, setReportContent] = useState("")
-  const [postForReportModal, setPostForReportModal] = useState(null);
-
-  const [user, setUser] = useState(null);
-  const [loadedUser, setLoadedUser] = useState(false);
-  const [fetchError, setFetchError] = useState(false);
-  const [errorMessage, setErrorMessage] = useState("");
-
-  useEffect(() => {
-    const url = `http://192.168.1.108:8080/secure/currentUser`;
-
-    const fetchUser = async () => {
-      try {
-        const response = await axios.get(url, { withCredentials: true });
-        var cyclicGraph = await response.data;
-        var jsogStructure = JSOG.encode(cyclicGraph);
-        cyclicGraph = JSOG.decode(jsogStructure);
-        setUser(cyclicGraph);
-        setLoadedUser(true);
-      } catch (error) {
-        setFetchError(true);
-      }
-    };
-
-    if (auth) fetchUser();
-  }, []);
+
+  const [postForModal, setPostForModal] = useState(null);
 
   const handleLike = async (post) => {
+    if (
+      auth &&
+      userLoaded &&
+      !post.likes.some((e) => e.id === user.user.id) &&
+      !post.dislikes.some((e) => e.id === user.user.id)
+    ) {
+      const response = await axios(
+        `http://192.168.0.17:8080/secure/professor/${professor.professorId}/upvoteOpinion/${post.postId}`,
+        {
+          method: "get",
+          withCredentials: true,
+        }
+      );
+
+      window.location.reload(false);
+    } else {
+      return;
+    }
+  };
+
+  const handleDislike = async (post) => {
+    if (
+      auth &&
+      auth &&
+      userLoaded &&
+      !post.likes.some((e) => e.id === user.user.id) &&
+      !post.dislikes.some((e) => e.id === user.user.id)
+    ) {
+      const response = await axios(
+        `http://192.168.0.17:8080/secure/professor/${professor.professorId}/downvoteOpinion/${post.postId}`,
+        {
+          method: "get",
+          withCredentials: true,
+        }
+      );
+
+      window.location.reload(false);
+    } else {
+      return;
+    }
+  };
+
+  const handleReply = (opinion) => {
     if (auth) {
-      if (
-        loadedUser &&
-        user &&
-        !post.votes.some((e) => e.user.id === user.id)
-      ) {
-        const response = await axios(
-          `http://192.168.1.108:8080/secure/upvoteOpinion/${post.postId}`,
-          {
-            method: "get",
-            withCredentials: true,
-          }
-        );
-        window.location.reload();
-      } else {
-        return;
-      }
+      setReplyModalDisplay("block");
+      setPostForModal(opinion);
     } else {
       navigate("/login");
@@ -87,60 +90,10 @@
   };
 
-  const handleDislike = async (post) => {
-    if (auth) {
-      if (
-        loadedUser &&
-        user &&
-        !post.votes.some((e) => e.user.id === user.id)
-      ) {
-        const response = await axios(
-          `http://192.168.1.108:8080/secure/downvoteOpinion/${post.postId}`,
-          {
-            method: "get",
-            withCredentials: true,
-          }
-        );
-
-        window.location.reload();
-      } else {
-        return;
-      }
-    } else {
-      navigate("/login");
-    }
-  };
-
-  const handleReply = (opinion) => {
-    if (auth) {
-      setReplyModalDisplay("block");
-      setPostForReplyModal(opinion);
-      document.body.style.overflowY = "hidden";
-    } else {
-      navigate("/login");
-    }
-  };
-
-  const handleReport = (opinion) => {
-    if (auth) {
-      setReportModalDisplay("block");
-      setPostForReportModal(opinion);
-      document.body.style.overflowY = "hidden";
-    } else {
-      navigate("/login");
-    }
-  }
-
   const handleModalCloseClick = () => {
     setReplyModalDisplay("none");
-    setReportModalDisplay("none");
-    document.body.style.overflowY = "auto";
-  };
-
-  const handleReplyContentChange = (e) => {
+  };
+
+  const handleContentChange = (e) => {
     setReplyContent(e.target.value);
-  };
-
-  const handleReportContentChange = (e) => {
-    setReportContent(e.target.value);
   };
 
@@ -148,132 +101,68 @@
     e.preventDefault();
 
-    if (!replyContent.length < 1) {
-      const response = await axios(
-        `http://192.168.1.108:8080/secure/professor/${professor.professorId}/replyToOpinion/${postId}`,
-        {
-          method: "post",
-          data: {
-            content: replyContent,
-          },
-          withCredentials: true,
-        }
-      );
-      setErrorMessage("");
-      window.location.reload();
-    } else {
-      setErrorMessage("Полето за содржина не смее да биде празно");
-    }
-  };
-
-  const handleReportSubmit = async (e, postId) => {
-    e.preventDefault();
-
-    if (!reportContent.length < 1) {
-      const response = await axios(
-          `http://192.168.1.108:8080/secure/reportOpinion/${postId}`,
-          {
-            method: "post",
-            data: {
-              description: reportContent,
-            },
-            withCredentials: true,
-          }
-      );
-      setErrorMessage("");
-      window.location.reload();
-    } else {
-      setErrorMessage("Полето за содржина не смее да биде празно");
-    }
+    const response = await axios(
+      `http://192.168.0.17:8080/secure/professor/${professor.professorId}/replyToOpinion/${postId}`,
+      {
+        method: "post",
+        data: {
+          content: replyContent,
+        },
+        withCredentials: true,
+      }
+    );
+
+    window.location.reload(false);
+    //console.log(response);
   };
 
   function displayChildPosts(child, parentPostAuthorUsername, replyIndent) {
     if (child == null) return;
-    if (!renderedOpinionIds.includes(child.postId)) {postCount = renderedOpinionIds.push(child.postId);}
+    postCount = renderedOpinionIds.push(child.postId);
     return (
       <div key={child.postId}>
         <OpinionReplyCard indent={replyIndent + "px"}>
           <OpinionReplyCardContent>
-            <p style={{ fontStyle: "italic", marginBottom: "10px" }}>
-              <a href={"/user/" + child.author.id}>{child.author.username}</a>{" "}
-              му реплицирал на {parentPostAuthorUsername}
+            <p>
+              <a href="#">{child.author.username}</a> му реплицирал на{" "}
+              {parentPostAuthorUsername}
             </p>
-            <p style={{ marginBottom: "10px", maxWidth: "85%" }}>
-              {child.content}
-            </p>
-            {new Date(child.timePosted).setMilliseconds(0) === new Date(child.timeLastEdited).setMilliseconds(0) ? (
-              <OpinionCardContentTime>
-                {dateConverter(
-                  new Date(child.timePosted).toString().slice(4, -43)
-                )} <span style={{fontStyle:"normal",color:"blue"}}>#{child.postId}</span>
-              </OpinionCardContentTime>
-            ) : (
-              <OpinionCardContentTime>
-                {dateConverter(
-                  new Date(child.timeLastEdited).toString().slice(4, -43)
-                )}{" "} <span style={{fontStyle:"normal",color:"blue"}}>#{child.postId}</span>{" "}
-                (едитирано од модератор)
-              </OpinionCardContentTime>
-            )}
-
-            <div
-              style={{
-                display:
-                  !auth || (auth && loadedUser && user.id !== child.author.id)
-                    ? "block"
-                    : "none",
-              }}
-            >
-              <StyledFontAwesomeIcon
-                icon={solid("thumbs-up")}
-                right={50 + "px"}
-                color={
-                  auth && loadedUser && user
-                    ? child.votes.some(
-                        (e) => e.vote === "UPVOTE" && e.user.id === user.id
-                      )
-                      ? "green"
+            <p>{child.content}</p>
+            <OpinionReplyCardContentTime>
+              {dateConverter(
+                new Date(child.timePosted).toString().slice(4, -43)
+              )}
+            </OpinionReplyCardContentTime>
+            {auth && userLoaded && user.user.id !== child.author.id && (
+              <>
+                <StyledFontAwesomeIcon
+                  icon={solid("thumbs-up")}
+                  right={50 + "px"}
+                  color={
+                    child.likes.some((e) => e.id === user.user.id)
+                      ? "greenyellow"
                       : "darkgrey"
-                    : "darkgrey"
-                }
-                onClick={() => handleLike(child)}
-              />
-
-              <VoteCount right={50 + "px"}>
-                {child.votes.filter((v) => v.vote === "UPVOTE").length}
-              </VoteCount>
-
-              <StyledFontAwesomeIcon
-                icon={solid("thumbs-down")}
-                right={10 + "px"}
-                color={
-                  auth && loadedUser && user
-                    ? child.votes.some(
-                        (e) => e.vote === "DOWNVOTE" && e.user.id === user.id
-                      )
+                  }
+                  onClick={() => handleLike(child)}
+                />
+                <VoteCount right={50 + "px"}>{child.likes.length}</VoteCount>
+                <StyledFontAwesomeIcon
+                  icon={solid("thumbs-down")}
+                  right={10 + "px"}
+                  color={
+                    child.dislikes.some((e) => e.id === user.user.id)
                       ? "indianred"
                       : "darkgrey"
-                    : "darkgrey"
-                }
-                onClick={() => handleDislike(child)}
-              />
-
-              <VoteCount right={10 + "px"}>
-                {child.votes.filter((v) => v.vote === "DOWNVOTE").length}
-              </VoteCount>
-
-              <StyledFontAwesomeIcon
-                icon={solid("reply")}
-                right={90 + "px"}
-                color="darkgrey"
-                onClick={() => handleReply(child)}
-              />
-
-              <StyledFontAwesomeIcon
-                  icon={solid("flag")}
-                  right={130 + "px"}
+                  }
+                  onClick={() => handleDislike(child)}
+                />
+                <VoteCount right={10 + "px"}>{child.dislikes.length}</VoteCount>
+                <StyledFontAwesomeIcon
+                  icon={solid("reply")}
+                  right={90 + "px"}
                   color="darkgrey"
-                  onClick={() => handleReport(child)}
-              />
-            </div>
+                  onClick={() => handleReply(child)}
+                />
+              </>
+            )}
           </OpinionReplyCardContent>
           {child.children.map((childOfChild) =>
@@ -291,6 +180,6 @@
   return (
     <div className="opinionTree">
-      {relatedOpinions.map((opinion) => {
-        if (!renderedOpinionIds.includes(opinion.postId) && opinion.parent === null) {
+      {professor.relatedOpinions.map((opinion) => {
+        if (!renderedOpinionIds.includes(opinion.postId)) {
           postCount = renderedOpinionIds.push(opinion.postId);
           return (
@@ -298,96 +187,52 @@
               <OpinionCard>
                 <OpinionCardContent>
-                  <p style={{ fontStyle: "italic", marginBottom: "10px" }}>
-                    <a href={"/user/" + opinion.author.id}>
-                      {opinion.author.username}
-                    </a>{" "}
-                    напишал
+                  <p>
+                    <a href="#">{opinion.author.username}</a> напишал
                   </p>
-                  <p style={{ marginBottom: "10px", maxWidth: "85%" }}>
-                    {opinion.content}
-                  </p>
-                  {new Date(opinion.timePosted).setMilliseconds(0) === new Date(opinion.timeLastEdited).setMilliseconds(0) ? (
-                    <OpinionCardContentTime>
-                      {dateConverter(
-                        new Date(opinion.timePosted).toString().slice(4, -43)
-                      )} <span style={{fontStyle:"normal",color:"blue"}}>#{opinion.postId}</span>
-                    </OpinionCardContentTime>
-                  ) : (
-                    <OpinionCardContentTime>
-                      {dateConverter(
-                        new Date(opinion.timeLastEdited)
-                          .toString()
-                          .slice(4, -43)
-                      )}{" "} <span style={{fontStyle:"normal",color:"blue"}}>#{opinion.postId}</span>{" "}
-                      (едитирано од модератор)
-                    </OpinionCardContentTime>
-                  )}
-
-                  <div
-                    style={{
-                      display:
-                        !auth ||
-                        (auth && loadedUser && user.id !== opinion.author.id)
-                          ? "block"
-                          : "none",
-                    }}
-                  >
-                    <StyledFontAwesomeIcon
-                      icon={solid("thumbs-up")}
-                      right={50 + "px"}
-                      color={
-                        auth && loadedUser && user
-                          ? opinion.votes.some(
-                              (e) =>
-                                e.vote === "UPVOTE" && e.user.id === user.id
-                            )
-                            ? "green"
+                  <OpinionCardContentTitle>
+                    {opinion.title}
+                  </OpinionCardContentTitle>
+                  <p>{opinion.content}</p>
+                  <OpinionCardContentTime>
+                    {dateConverter(
+                      new Date(opinion.timePosted).toString().slice(4, -43)
+                    )}
+                  </OpinionCardContentTime>
+                  {auth && userLoaded && user.user.id !== opinion.author.id && (
+                    <>
+                      <StyledFontAwesomeIcon
+                        icon={solid("thumbs-up")}
+                        right={50 + "px"}
+                        color={
+                          opinion.likes.some((e) => e.id === user.user.id)
+                            ? "greenyellow"
                             : "darkgrey"
-                          : "darkgrey"
-                      }
-                      onClick={() => handleLike(opinion)}
-                    />
-
-                    <VoteCount right={50 + "px"}>
-                      {opinion.votes.filter((v) => v.vote === "UPVOTE").length}
-                    </VoteCount>
-
-                    <StyledFontAwesomeIcon
-                      icon={solid("thumbs-down")}
-                      right={10 + "px"}
-                      color={
-                        auth && loadedUser && user
-                          ? opinion.votes.some(
-                              (e) =>
-                                e.vote === "DOWNVOTE" && e.user.id === user.id
-                            )
+                        }
+                        onClick={() => handleLike(opinion)}
+                      />
+                      <VoteCount right={50 + "px"}>
+                        {opinion.likes.length}
+                      </VoteCount>
+                      <StyledFontAwesomeIcon
+                        icon={solid("thumbs-down")}
+                        right={10 + "px"}
+                        color={
+                          opinion.dislikes.some((e) => e.id === user.user.id)
                             ? "indianred"
                             : "darkgrey"
-                          : "darkgrey"
-                      }
-                      onClick={() => handleDislike(opinion)}
-                    />
-
-                    <VoteCount right={10 + "px"}>
-                      {
-                        opinion.votes.filter((v) => v.vote === "DOWNVOTE")
-                          .length
-                      }
-                    </VoteCount>
-
-                    <StyledFontAwesomeIcon
-                      icon={solid("reply")}
-                      right={90 + "px"}
-                      color="darkgrey"
-                      onClick={() => handleReply(opinion)}
-                    />
-
-                    <StyledFontAwesomeIcon
-                        icon={solid("flag")}
-                        right={130 + "px"}
+                        }
+                        onClick={() => handleDislike(opinion)}
+                      />
+                      <VoteCount right={10 + "px"}>
+                        {opinion.dislikes.length}
+                      </VoteCount>
+                      <StyledFontAwesomeIcon
+                        icon={solid("reply")}
+                        right={90 + "px"}
                         color="darkgrey"
-                        onClick={() => handleReport(opinion)}
-                    />
-                  </div>
+                        onClick={() => handleReply(opinion)}
+                      />
+                    </>
+                  )}
                 </OpinionCardContent>
                 {opinion.children.map((child) =>
@@ -398,7 +243,6 @@
           );
         }
-        return null;
       })}
-      {postForReplyModal && (
+      {postForModal && (
         <Modal display={replyModalDisplay}>
           <ModalContent>
@@ -406,8 +250,8 @@
               <ModalClose onClick={handleModalCloseClick}>&times;</ModalClose>
               <h3 style={{ marginTop: "5px" }}>
-                Реплика на {postForReplyModal.author.username}
+                Реплика на {postForModal.author.username}
               </h3>
             </ModalHeader>
-            <form onSubmit={(e) => handleReplySubmit(e, postForReplyModal.postId)}>
+            <form onSubmit={(e) => handleReplySubmit(e, postForModal.postId)}>
               <ModalBody>
                 <label htmlFor="content">
@@ -418,14 +262,8 @@
                     cols="100"
                     value={replyContent}
-                    onChange={handleReplyContentChange}
-                    spellCheck={false}
+                    onChange={handleContentChange}
                   />
                 </label>
               </ModalBody>
-              <p
-                style={{ color: "red", marginLeft: "15px", marginTop: "10px" }}
-              >
-                {errorMessage}
-              </p>
               <ModalFooter type="submit">РЕПЛИЦИРАЈ</ModalFooter>
             </form>
@@ -433,37 +271,4 @@
         </Modal>
       )}
-      {postForReportModal && (
-          <Modal display={reportModalDisplay}>
-            <ModalContent>
-              <ModalHeader>
-                <ModalClose onClick={handleModalCloseClick}>&times;</ModalClose>
-                <h3 style={{ marginTop: "5px" }}>
-                  Пријава за мислење #{postForReportModal.postId}
-                </h3>
-              </ModalHeader>
-              <form onSubmit={(e) => handleReportSubmit(e, postForReportModal.postId)}>
-                <ModalBody>
-                  <label htmlFor="content">
-                    <b>Наведете причина</b>:
-                    <ModalTextarea
-                        id="content"
-                        rows="8"
-                        cols="100"
-                        value={reportContent}
-                        onChange={handleReportContentChange}
-                        spellCheck={false}
-                    />
-                  </label>
-                </ModalBody>
-                <p
-                    style={{ color: "red", marginLeft: "15px", marginTop: "10px" }}
-                >
-                  {errorMessage}
-                </p>
-                <ModalFooter type="submit">ПРИЈАВИ</ModalFooter>
-              </form>
-            </ModalContent>
-          </Modal>
-      )}
     </div>
   );
Index: reactapp/src/Components/Root.js
===================================================================
--- reactapp/src/Components/Root.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ 	(revision )
@@ -1,38 +1,0 @@
-import React, { useContext, useEffect, useState } from "react";
-import { MainWrapper, MainTitle } from "./Styled/Main.style";
-import { Outlet } from "react-router-dom";
-import Search from "./Search";
-import UserHeader from "./UserHeader";
-import AuthApi from "../api/AuthApi";
-import Logout from "./Logout";
-import {LogoutButton} from "./Styled/UserDetails.style";
-
-function Root({ user, userLoaded }) {
-  const { auth, setAuth } = useContext(AuthApi);
-
-  return (
-    <MainWrapper>
-      <style>
-        @import
-        url('https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap');
-      </style>
-      <style>
-        {
-          "body { background-color: papayawhip;} * {margin: 0; padding: 0; box-sizing: border-box;}"
-        }
-      </style>
-      <a href="/">
-        <MainTitle>profesori.mk</MainTitle>
-      </a>{" "}
-        <div style={{ float: "left", marginTop: 20, marginLeft: 40 }}>
-            {!auth && <a href="/login"><LogoutButton style={{textDecoration:"underline", color:"black"}}>Најава/регистрација</LogoutButton></a>}{" "}
-        </div>
-      <Search />
-      {auth && <UserHeader />}
-      <div style={{ marginTop: "140px" }}/>
-      <Outlet />
-    </MainWrapper>
-  );
-}
-
-export default Root;
Index: reactapp/src/Components/Search.js
===================================================================
--- reactapp/src/Components/Search.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/Search.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -13,23 +13,17 @@
   const [query, setQuery] = useState("");
   const [professors, setProfessors] = useState([]);
-  const [subjects, setSubjects] = useState([]);
 
   useEffect(() => {
+    const url = `http://192.168.0.17:8080/public/professors/nameContains/${transliterate(
+      query
+    )}`;
+
     const fetchData = async () => {
       try {
-        Promise.all([fetch(`http://192.168.1.108:8080/public/professors/nameContains/${transliterate(query)}`),
-          fetch(`http://192.168.1.108:8080/public/subjects/nameContains/${transliterate(query)}`)])
-            .then(([resProfessors, resSubjects]) => Promise.all([resProfessors.json(), resSubjects.json()]))
-            .then(([dataProfessors, dataSubjects]) => {
-              let cyclicGraph1 = dataProfessors;
-              let jsogStructure1 = JSOG.encode(cyclicGraph1);
-              cyclicGraph1 = JSOG.decode(jsogStructure1);
-              setProfessors(cyclicGraph1);
-
-              let cyclicGraph2 = dataSubjects;
-              let jsogStructure2 = JSOG.encode(cyclicGraph2);
-              cyclicGraph2 = JSOG.decode(jsogStructure2);
-              setSubjects(cyclicGraph2);
-            })
+        const response = await fetch(url);
+        var cyclicGraph = await response.json();
+        var jsogStructure = JSOG.encode(cyclicGraph);
+        cyclicGraph = JSOG.decode(jsogStructure);
+        setProfessors(cyclicGraph);
       } catch (error) {
         console.log("Fetching error", error);
@@ -37,5 +31,5 @@
     };
 
-    if (query.length > 3) fetchData();
+    if (query.length > 2) fetchData();
   }, [query]);
 
@@ -45,5 +39,5 @@
     if (event.key === "Enter") {
       setExpanded(false);
-      navigate("/search", { state: professors.concat(subjects) });
+      navigate("/search", { state: professors });
     }
   };
@@ -77,13 +71,13 @@
       <SearchDropdown
         display={
-          query.length > 3 && (professors.length > 0 || subjects.length > 0) && expanded
+          query.length > 2 && professors.length > 0 && expanded
             ? "block"
             : "none"
         }
       >
-        {query.length > 3 &&
-          professors.concat(subjects).slice(0, 7).map((match) => (
+        {query.length > 2 &&
+          professors.slice(0, 7).map((professor) => (
             <SearchResult
-              key={match.professorId !== undefined ? match.professorId : match.subjectId}
+              key={professor.professorId}
               onMouseDown={(event) => {
                 event.preventDefault();
@@ -92,10 +86,10 @@
               margin="0"
             >
-              <SearchResultLink href={`/${match.professorId !== undefined ? 'professor': 'subject'}/` + `${match.professorId !== undefined ? match.professorId : match.subjectId}`}>
+              <SearchResultLink href={"/professor/" + professor.professorId}>
                 <SearchResultText weight="bold" size="medium">
-                  {match.professorId !== undefined ? match.professorName : match.subjectName}
+                  {professor.professorName}
                 </SearchResultText>
                 <SearchResultText weight="normal" size="er">
-                  {match.professorId !== undefined ? match.faculty.facultyName : match.studyProgramme.faculty.facultyName}
+                  {professor.faculty.facultyName}
                 </SearchResultText>
               </SearchResultLink>
Index: reactapp/src/Components/Styled/EntityList.style.js
===================================================================
--- reactapp/src/Components/Styled/EntityList.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ 	(revision )
@@ -1,48 +1,0 @@
-import styled from "styled-components";
-
-export const EntityUl = styled.ul`
-  list-style: none;
-  padding-left: 5px;
-`;
-
-export const EntityLi = styled.li`
-  padding: 10px;
-  margin: 15px 0px;
-  font-size: 18px;
-  font-weight: bold;
-  background-color: ${(props) => props.bgcolor};
-  box-shadow: 2px 2px 5px #aaaaaa;
-  position: relative;
-`;
-
-export const EntityParam = styled.p`
-  position: absolute;
-  right: ${(props) => props.right};
-  top: 10px;
-  font-style: italic;
-  font-size: 16px;
-`;
-
-export const EntityTypeSelector = styled.div`
-  box-shadow: ${(props) => props.boxshadow};
-  width: 50%;
-  height: 50px;
-  opacity: 0.6;
-  margin: 15px 10px;
-  margin-bottom: 30px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 20px;
-  font-weight: bold;
-  background-color: ${(props) => props.backgroundcolor};
-  color: ${(props) => props.color};
-  letter-spacing: 2px;
-  transition: 0.4s;
-  &:hover {
-    box-shadow: ${(props) => props.boxshadowhover};
-    font-weight: bold;
-    cursor: ${(props) => props.cursor};
-    opacity: ${(props) => props.opacityhover};
-  }
-`;
Index: reactapp/src/Components/Styled/LoadingSpinner.style.js
===================================================================
--- reactapp/src/Components/Styled/LoadingSpinner.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ 	(revision )
@@ -1,11 +1,0 @@
-import React from "react";
-import "../../static/spinner.css";
-
-export default function LoadingSpinner() {
-    return (
-        <div className="spinner-container">
-            <div className="loading-spinner">
-            </div>
-        </div>
-    );
-}
Index: reactapp/src/Components/Styled/Login.style.js
===================================================================
--- reactapp/src/Components/Styled/Login.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ 	(revision )
@@ -1,49 +1,0 @@
-import styled from "styled-components";
-
-export const LoginInput = styled.input`
-  height: 30px;
-  width: 100%;
-  margin: 15px;
-  padding: 15px;
-  font-size: 16px;
-  border: 2px solid #ccc;
-`;
-
-export const LoginButton = styled.button`
-  background-color: rgba(0, 102, 204, 1);
-  opacity: 0.6;
-  padding: 5px 16px;
-  transition: 0.4s;
-  &:hover {
-    opacity: 1;
-    cursor: pointer;
-  }
-  color: white;
-  border: 0;
-  font-size: 18px;
-  font-weight: bold;
-  margin-top: 10px;
-  width: 100%;
-`;
-
-export const RequiredAsterisk = styled.p`
-  color: rgba(0, 102, 204, 1);
-  font-weight: bold;
-  position: absolute;
-  right: 38px;
-  top: ${(props) => props.top};
-  font-size: 18px;
-`;
-
-export const FieldConstraintModal = styled.div`
-  width: 400px;
-  padding: 15px;
-  color: white;
-  background-color: rgba(0, 0, 0, 0.6);
-  display: block;
-  transition: opacity 0.4s ease-out;
-  opacity: ${(props) => props.opacity};
-  position: absolute;
-  right: ${(props) => props.right};
-  top: ${(props) => props.top};
-`;
Index: reactapp/src/Components/Styled/Main.style.js
===================================================================
--- reactapp/src/Components/Styled/Main.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/Styled/Main.style.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -12,5 +12,4 @@
   padding-bottom: 30px;
   width: 80%;
-  box-shadow: 2px 2px 10px #aaaaaa;
 `;
 
@@ -22,8 +21,2 @@
   color: black;
 `;
-
-export const CurrentPageNav = styled.div`
-  font-style: italic;
-  font-size: 16px;
-  font-weight: bold;
-`;
Index: reactapp/src/Components/Styled/Modal.style.js
===================================================================
--- reactapp/src/Components/Styled/Modal.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/Styled/Modal.style.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -18,5 +18,4 @@
   float: right;
   font-weight: bold;
-  box-shadow: 2px 1px 10px #aaaaaa;
 `;
 
@@ -28,5 +27,5 @@
   top: 0;
   width: 100%;
-  height: 100%;
+  height: auto;
   overflow: auto;
   background-color: rgb(0, 0, 0);
@@ -47,5 +46,5 @@
 export const ModalContent = styled.div`
   background-color: #fefefe;
-  margin: 2% auto;
+  margin: 15% auto;
   padding: 20px;
   border: 1px solid #888;
@@ -107,5 +106,4 @@
   padding: 12px 16px;
   border: 1px solid #ccc;
-  font-family: inherit;
 `;
 
@@ -117,4 +115,3 @@
   border: 1px solid #ccc;
   resize: none;
-  font-family: inherit;
 `;
Index: reactapp/src/Components/Styled/OpinionCard.style.js
===================================================================
--- reactapp/src/Components/Styled/OpinionCard.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/Styled/OpinionCard.style.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -8,5 +8,5 @@
   margin-bottom: 20px;
   padding: 10px;
-  box-shadow: 2px 2px 10px #aaaaaa;
+  border: 1px solid black;
 `;
 
@@ -18,5 +18,4 @@
   }
   position: relative;
-  overflow-wrap: break-word;
 `;
 
@@ -56,5 +55,4 @@
   display: block;
   position: absolute;
-  height: 20px;
   top: 50%;
   transform: translateY(-50%);
@@ -62,5 +60,5 @@
   transition: 0.5s;
   &:hover {
-    opacity: 0.5;
+    color: ${(props) => props.color};
     cursor: pointer;
   }
Index: reactapp/src/Components/Styled/ProfessorCard.style.js
===================================================================
--- reactapp/src/Components/Styled/ProfessorCard.style.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/Styled/ProfessorCard.style.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -2,8 +2,9 @@
 
 export const ProfessorCard = styled.div`
+  background-color: papayawhip;
   width: auto;
   padding: 10px;
   margin-bottom: 30px;
-  margin-top: 40px;
+  margin-top: 140px;
 `;
 
Index: reactapp/src/Components/Styled/SubjectsAccordion.style..js
===================================================================
--- reactapp/src/Components/Styled/SubjectsAccordion.style..js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ 	(revision )
@@ -1,27 +1,0 @@
-import styled from "styled-components";
-
-export const SubjectsAccordionDiv = styled.div`
-  height: ${(props) => props.height};
-  opacity: ${(props) => props.opacity};
-  transition: opacity 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);
-  margin-left: 20px;
-`;
-
-export const AccordionTitle = styled.div`
-  padding: 10px;
-  margin: 15px 0px;
-  font-size: 18px;
-  font-weight: bold;
-  background-color: cornsilk;
-  box-shadow: 2px 2px 5px #aaaaaa;
-  position: relative;
-  cursor: pointer;
-`;
-
-export const OpenAccordionSymbol = styled.span`
-  font-size: 24px;
-  position: absolute;
-  right: 15px;
-  bottom: 7px;
-  color: grey;
-`;
Index: reactapp/src/Components/SubjectsAccordion.js
===================================================================
--- reactapp/src/Components/SubjectsAccordion.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ 	(revision )
@@ -1,117 +1,0 @@
-import React, { useState } from "react";
-import {
-  AccordionTitle,
-  SubjectsAccordionDiv,
-  OpenAccordionSymbol,
-} from "./Styled/SubjectsAccordion.style.";
-import { EntityLi, EntityUl, EntityParam } from "./Styled/EntityList.style";
-import JSOG from "jsog";
-
-const SubjectsAccordion = (props) => {
-  const [height, setHeight] = useState("0");
-  const [opacity, setOpacity] = useState(0);
-
-  const [subjects, setSubjects] = useState(null);
-  const [loadedSubjects, setLoadedSubjects] = useState(false);
-  const [counts, setCounts] = useState(null);
-  const [loadedCounts, setLoadedCounts] = useState(false);
-
-  const [fetchError, setFetchError] = useState(false);
-  const handleClick = () => {
-    if (height === "0") {
-      setHeight("auto");
-      setOpacity(1);
-      try {
-        Promise.all([fetch(`http://192.168.1.108:8080/public/subjects?studyProgrammeId=${props.title.studyProgrammeId}`),
-          fetch(`http://192.168.1.108:8080/public/study_programme/${props.title.studyProgrammeId}/threadCountForEachSubject`)])
-            .then(([resSubjects, counts]) => Promise.all([resSubjects.json(), counts.json()]))
-            .then(([dataSubjects, dataCounts]) => {
-              let cyclicGraph1 = dataSubjects;
-              let jsogStructure1 = JSOG.encode(cyclicGraph1);
-              cyclicGraph1 = JSOG.decode(jsogStructure1);
-              setSubjects(cyclicGraph1);
-              setLoadedSubjects(true);
-
-              let cyclicGraph2 = dataCounts;
-              let jsogStructure2 = JSOG.encode(cyclicGraph2);
-              cyclicGraph2 = JSOG.decode(jsogStructure2);
-              setCounts(cyclicGraph2);
-              setLoadedCounts(true);
-            })
-
-      } catch (error) {
-        setFetchError(true);
-      }
-    } else {
-      setHeight("0");
-      setOpacity(0);
-    }
-  };
-  return (
-    <div onClick={() => handleClick()}>
-      <AccordionTitle>
-        {props.title.studyProgrammeName} ({props.title.cycle}. циклус)
-        <OpenAccordionSymbol>&#9662;</OpenAccordionSymbol>
-      </AccordionTitle>
-      <SubjectsAccordionDiv height={height} opacity={opacity}>
-        <EntityUl>
-          {loadedSubjects &&
-            subjects.map((item, idx) => {
-              let totalPosts = parseInt(counts[idx].split(",")[1]);
-              return (
-                <EntityLi key={item.subjectName} bgcolor="cornsilk">
-                  <a href={"/subject/" + item.subjectId}>{item.subjectName}</a>
-                  <EntityParam right="30px">
-                    {totalPosts !== 1 ? (
-                      totalPosts !== 0 ? (
-                        <span
-                          style={{
-                            fontWeight: "normal",
-                            opacity: totalPosts === 0 ? "0.5" : "1",
-                          }}
-                        >
-                          <span
-                            style={{
-                              fontWeight: "bold",
-                              opacity: totalPosts === 0 ? "0.5" : "1",
-                            }}
-                          >
-                            {totalPosts}
-                          </span>{" "}
-                          мислења
-                        </span>
-                      ) : (
-                        <span
-                          style={{
-                            fontWeight: "normal",
-                            opacity: totalPosts === 0 ? "0.5" : "1",
-                          }}
-                        >
-                          <span
-                            style={{
-                              fontWeight: "bold",
-                              opacity: totalPosts === 0 ? "0.5" : "1",
-                            }}
-                          >
-                            {totalPosts}
-                          </span>{" "}
-                          мислења
-                        </span>
-                      )
-                    ) : (
-                      <span style={{ fontWeight: "normal" }}>
-                        <span style={{ fontWeight: "bold" }}>{totalPosts}</span>{" "}
-                        мислење
-                      </span>
-                    )}
-                  </EntityParam>
-                </EntityLi>
-              );
-            })}
-        </EntityUl>
-      </SubjectsAccordionDiv>
-    </div>
-  );
-};
-
-export default SubjectsAccordion;
Index: reactapp/src/Components/UserHeader.js
===================================================================
--- reactapp/src/Components/UserHeader.js	(revision 8dffe022a42c8c6fdea90df3276eb16b6610b51f)
+++ reactapp/src/Components/UserHeader.js	(revision ebc51762bbd1b4345d8908789af87bdc49aad058)
@@ -3,37 +3,13 @@
 import axios from "../api/axios";
 import Logout from "./Logout";
-import LoadingSpinner from "./Styled/LoadingSpinner.style";
 
-function UserHeader({}) {
-  const [user, setUser] = useState(null);
-  const [loadedUser, setLoadedUser] = useState(false);
-  const [fetchError, setFetchError] = useState(false);
-
-  useEffect(() => {
-    const url = `http://192.168.1.108:8080/secure/currentUser`;
-
-    const fetchUser = async () => {
-      try {
-        const response = await axios.get(url, { withCredentials: true });
-        var cyclicGraph = await response.data;
-        var jsogStructure = JSOG.encode(cyclicGraph);
-        cyclicGraph = JSOG.decode(jsogStructure);
-        setUser(cyclicGraph);
-        setLoadedUser(true);
-      } catch (error) {
-        setFetchError(true);
-      }
-    };
-
-    fetchUser();
-  }, []);
-
-  return loadedUser ? (
-    <div style={{ float: "left", marginTop: 20, marginLeft: 10 }}>
+function UserHeader({ user, userLoaded }) {
+  return userLoaded ? (
+    <div style={{ float: "left", marginTop: 20, marginLeft: 40 }}>
       Најавен/а: <a href="/user_dashboard">{user.username}</a> <Logout />{" "}
     </div>
   ) : (
-    <div style={{ float: "left", marginTop: 25, marginLeft: 10 }}>
-      <LoadingSpinner/>
+    <div style={{ float: "left", marginTop: 25, marginLeft: 60 }}>
+      се вчитува...
     </div>
   );
