diff --git a/src/main/java/NTNU/IDATT1002/controllers/DataExchange.java b/src/main/java/NTNU/IDATT1002/controllers/DataExchange.java
index b8a4ff0408357033ee6c5ccc1a9f37096f88fb28..6a6c90cc615c63f2e46145da7d90dc0fd1266148 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/DataExchange.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/DataExchange.java
@@ -19,7 +19,7 @@ public class DataExchange {
     private String searchField;
     private List<File> uploadedFiles;
     private Long chosenAlbumId;
-    private String chosenImg;
+    private Long chosenImg;
 
     public DataExchange(){
         searchField = "";
@@ -45,7 +45,7 @@ public class DataExchange {
         return chosenAlbumId;
     }
 
-    public String getChosenImg() {
+    public Long getChosenImg() {
         return chosenImg;
     }
 
@@ -69,7 +69,7 @@ public class DataExchange {
         this.chosenAlbumId = chosenAlbumId;
     }
 
-    public void setChosenImg(String chosenImg) {
+    public void setChosenImg(Long chosenImg) {
         this.chosenImg = chosenImg;
     }
 
diff --git a/src/main/java/NTNU/IDATT1002/controllers/Explore.java b/src/main/java/NTNU/IDATT1002/controllers/Explore.java
index e9f7a47b102f13b9f089c465eba6489a5cc609a2..6f0e8987e557aab6abb8b2ea567b44563372f00b 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/Explore.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/Explore.java
@@ -1,10 +1,15 @@
 package NTNU.IDATT1002.controllers;
 
 import NTNU.IDATT1002.App;
+import NTNU.IDATT1002.models.Tag;
+import NTNU.IDATT1002.service.ImageService;
+import NTNU.IDATT1002.service.TagService;
+import NTNU.IDATT1002.utils.ImageUtil;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.fxml.Initializable;
 import javafx.geometry.Pos;
+import javafx.scene.Node;
 import javafx.scene.control.Button;
 import javafx.scene.control.ScrollPane;
 import javafx.scene.control.TextField;
@@ -21,6 +26,7 @@ import java.net.URL;
 import java.util.Arrays;
 import java.util.List;
 import java.util.ResourceBundle;
+import java.util.stream.Collectors;
 
 /**
  * Controls the buttons and changeable elements on explore.fxml,
@@ -50,30 +56,31 @@ public class Explore implements Initializable {
      */
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
-        List<String> urls = Arrays.asList("@../../Images/placeholder-1920x1080.png", "@../../Images/party.jpg", "@../../Images/placeholderLogo.png", "@../../Images/party.jpg","@../../Images/placeholder-1920x1080.png", "@../../Images/placeholderLogo.png", "@../../Images/placeholder-1920x1080.png", "@../../Images/placeholderLogo.png", "@../../Images/party.jpg", "@../../Images/placeholderLogo.png", "@../../Images/party.jpg","@../../Images/placeholder-1920x1080.png", "@../../Images/placeholderLogo.png", "@../../Images/placeholder-1920x1080.png", "@../../Images/party.jpg");
+        List<NTNU.IDATT1002.models.Image> images = new ImageService(App.ex.getEntityManager()).getAllImages();
         //Limited elements to 15 since grid pane since is 3x15
         //Can implement automatic row adding when this limit exceeded later
-        for(int i = 0; i < urls.size() && i < 15; i++) {
+        for(int i = 0; i < images.size() && i < 15; i++) {
             //Row and column in gripdane
             int column = i%3;
             int row = (i-column)/3;
 
             //Make vbox container for content
-            VBox v = new VBox();
-            v.setPrefHeight(400);
-            v.setPrefWidth(400);
-            v.setAlignment(Pos.TOP_LEFT);
-            //v.setStyle("-fx-background-color: #999999;");
+            VBox vBox = new VBox();
+            vBox.setPrefHeight(400);
+            vBox.setPrefWidth(400);
+            vBox.setAlignment(Pos.CENTER);
+            //vBox.setStyle("-fx-background-color: #999999;");
 
             //Image container
-            ImageView iV = new ImageView();
-            iV.setImage(new Image(urls.get(i)));
-            iV.setFitHeight(250);
-            iV.setFitWidth(400);
-            iV.pickOnBoundsProperty().setValue(true);
-            iV.setPreserveRatio(true);
+            ImageView imageView = new ImageView();
+            imageView.setId(String.valueOf(images.get(i).getId()));
+            imageView.setImage(ImageUtil.convertToFXImage(images.get(i)));
+            imageView.setFitHeight(250);
+            imageView.setFitWidth(400);
+            imageView.pickOnBoundsProperty().setValue(true);
+            imageView.setPreserveRatio(true);
             //Link to view image page
-            iV.setOnMouseClicked(new EventHandler<MouseEvent>() {
+            imageView.setOnMouseClicked(new EventHandler<MouseEvent>() {
                 @Override public void handle(MouseEvent e) {
                     try{
                         switchToPicture(e);
@@ -86,14 +93,15 @@ public class Explore implements Initializable {
             //Text describing the picture's title and tag
             Text title = new Text("TITLE:");
             title.setFont(Font.font("System Bold", 24));
-            Text tag = new Text("#TAGS");
+            String tagsAsString = TagService.getTagsAsString(images.get(i).getTags());
+            Text tag = new Text("TAGS:\n " + tagsAsString);
             tag.setFont(Font.font("System Bold", 18));
 
             //Add elements to vbox
-            v.getChildren().addAll(iV, title, tag);
+            vBox.getChildren().addAll(imageView, title, tag);
 
             //Add vbox to gridpane
-            gridPane.add(v, column, row);
+            gridPane.add(vBox, column, row);
         }
     }
 
@@ -161,8 +169,14 @@ public class Explore implements Initializable {
      * @throws IOException
      */
     public void switchToPicture(MouseEvent mouseEvent) throws IOException {
-        if(mouseEvent.getSource() instanceof ImageView){
-            App.ex.setChosenImg(((ImageView) mouseEvent.getSource()).getImage().getUrl());
+        long imageId = 0;
+        Node node = (Node) mouseEvent.getSource();
+        if (node.getId() != null){
+                imageId = Long.parseLong(node.getId());
+        }
+
+        if (imageId != 0) {
+            App.ex.setChosenImg(imageId);
             App.setRoot("view_picture");
         }
     }
diff --git a/src/main/java/NTNU/IDATT1002/controllers/Search.java b/src/main/java/NTNU/IDATT1002/controllers/Search.java
index edcf4974307c7d16ca7177b0eb7e9a0528f55fe3..c64c9813dc5c2e2a789564a0ec7237576aabb432 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/Search.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/Search.java
@@ -85,6 +85,7 @@ public class Search implements Initializable {
             pane.setPrefHeight(300);
 
             ImageView imageView = new ImageView();
+            imageView.setId(String.valueOf(images.get(i).getId()));
             imageView.setImage(ImageUtil.convertToFXImage(images.get(i)));
             imageView.setFitHeight(300);
             imageView.setFitWidth(500);
@@ -234,9 +235,15 @@ public class Search implements Initializable {
      * @throws IOException
      */
     public void switchToPicture(MouseEvent mouseEvent) throws IOException {
-        if(mouseEvent.getSource() instanceof ImageView){
-            App.ex.setChosenImg(((ImageView) mouseEvent.getSource()).getImage().getUrl());
-            App.setRoot("view_picture");
+        long imageId = 0;
+        Node node = (Node) mouseEvent.getSource();
+        if (node.getId() != null){
+            imageId = Long.parseLong(node.getId());
+        }
+
+        if (imageId != 0) {
+            App.ex.setChosenImg(imageId);
+            App.setRoot("view_image");
         }
     }
 }
diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java b/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java
index d13613a22510c6cbf0451ff51d9108fb013f5633..47f300f6a1b8becf031e675622238338a742ddd9 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewPicture.java
@@ -1,6 +1,8 @@
 package NTNU.IDATT1002.controllers;
 
 import NTNU.IDATT1002.App;
+import NTNU.IDATT1002.service.ImageService;
+import NTNU.IDATT1002.utils.ImageUtil;
 import javafx.event.ActionEvent;
 import javafx.fxml.Initializable;
 import javafx.scene.control.Button;
@@ -11,8 +13,10 @@ import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.Pane;
 import javafx.scene.text.Text;
 
+import javax.persistence.EntityManager;
 import java.io.IOException;
 import java.net.URL;
+import java.util.Optional;
 import java.util.ResourceBundle;
 
 
@@ -34,10 +38,18 @@ public class ViewPicture implements Initializable{
     public Pane metadata_pane;
     public Button tbar_searchBtn;
     public Button tbar_albums;
+    private ImageService imageService;
 
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
-        picture.setImage(new Image(App.ex.getChosenImg()));
+        EntityManager entityManager = App.ex.getEntityManager();
+        imageService = new ImageService(entityManager);
+        Long currentImageId = App.ex.getChosenImg();
+        NTNU.IDATT1002.models.Image foundImage = imageService.findById(currentImageId).get();
+        Image image = ImageUtil.convertToFXImage(foundImage);
+
+        picture.setImage(image);
+
     }
 
     /**
diff --git a/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java b/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java
index 857ab938b69df531317aa45c85e663e1abd10cad..07b854f64d616575c3cc2ddfe55e3db7979144ec 100644
--- a/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java
+++ b/src/main/java/NTNU/IDATT1002/repository/ImageRepository.java
@@ -37,6 +37,7 @@ public class ImageRepository extends AbstractRepository<Image, Long> {
       setEntityClass(Image.class);
     }
 
+
     /**
      * Retrieves all albums of the user with the given username.
      *
diff --git a/src/main/java/NTNU/IDATT1002/service/ImageService.java b/src/main/java/NTNU/IDATT1002/service/ImageService.java
index b9446aa5acc08393c012b66100158f374577faeb..1708cac27357868341347cbc92f2a541bb580854 100644
--- a/src/main/java/NTNU/IDATT1002/service/ImageService.java
+++ b/src/main/java/NTNU/IDATT1002/service/ImageService.java
@@ -101,6 +101,10 @@ public class ImageService {
                 .collect(Collectors.toList());
     }
 
+    public Optional<Image> findById(Long id){
+        return imageRepository.findById(id);
+    }
+
     /**
      * Searches images by tags and username, and merges the two list into one with all images
      * uses removeDuplicates list to return a list with no duplicate images
@@ -116,7 +120,7 @@ public class ImageService {
         allFound.addAll(byUsername);
         return removeDuplicates(allFound);
     }
-    
+
 
     /**
      * takes a list and removes all duplicate elements
@@ -127,4 +131,7 @@ public class ImageService {
     public List<Image> removeDuplicates(List<Image> images){
         return images.stream().distinct().collect(Collectors.toList());
     }
+    
+
+
 }