diff --git a/src/main/java/NTNU/IDATT1002/controllers/UploadedSingle.java b/src/main/java/NTNU/IDATT1002/controllers/UploadedSingle.java
index 63ab9e2616b8cbdc4b22e2434027f02b845d8ec8..9321eba6df93ba61fbf9055f42abc0b271495929 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/UploadedSingle.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/UploadedSingle.java
@@ -3,7 +3,9 @@ package NTNU.IDATT1002.controllers;
 import NTNU.IDATT1002.App;
 import NTNU.IDATT1002.ApplicationState;
 import NTNU.IDATT1002.models.Tag;
+import NTNU.IDATT1002.repository.TagRepository;
 import NTNU.IDATT1002.service.ImageService;
+import NTNU.IDATT1002.service.TagService;
 import javafx.event.ActionEvent;
 import javafx.fxml.Initializable;
 import javafx.scene.control.Button;
@@ -133,28 +135,18 @@ public class UploadedSingle implements Initializable {
    * Method for uploading image to database with tags
    * Image itself is not stored but URL is
    *
+   * @author Lars ØStby
    * @param actionEvent
    * @throws IOException
    */
 
   public void uploadSingle(ActionEvent actionEvent) throws IOException {
     List<File> list = App.ex.getUploadedFiles();
-    File fil = list.get(0);
-    ArrayList<Tag> tags = new ArrayList<>();
-    imageService.createImage(ApplicationState.getCurrentUser(), fil, tags);
-
+    File file = list.get(0);
+    List<Tag> tags = TagService.getTagsFromString(photo_tag.getText());
+    imageService.createImage(ApplicationState.getCurrentUser(), file, tags);
     App.setRoot("main");
   }
 
-  /***
-   * Method for splitting the tag textField into tags in a list
-   * @param photo_tag
-   * @return list of string
-   */
-  public List<String> tagStringSplit(TextField photo_tag) {
-    String tagTekst = photo_tag.getText();
-    return Arrays.asList(tagTekst.split("(?=#)"));
-
 
-  }
 }
diff --git a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
index 7a5f3bc2ae4c7a815dd17dcfaa8dfbec084ed5e5..65513152d5e6187e1dfdfe4890d5300d00b85034 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/ViewAlbum.java
@@ -6,6 +6,12 @@ import NTNU.IDATT1002.models.Tag;
 import NTNU.IDATT1002.service.AlbumDocument;
 import NTNU.IDATT1002.service.AlbumService;
 import NTNU.IDATT1002.utils.ImageUtil;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Optional;
+import java.util.ResourceBundle;
+import java.util.logging.Logger;
 import javafx.application.HostServices;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
@@ -23,6 +29,8 @@ import javafx.scene.layout.VBox;
 import javafx.scene.text.Font;
 import javafx.scene.text.FontWeight;
 import javafx.scene.text.Text;
+import javax.persistence.EntityManager;
+import org.slf4j.LoggerFactory;
 
 import javax.persistence.EntityManager;
 import java.io.File;
@@ -31,6 +39,7 @@ import java.net.URL;
 import java.util.Optional;
 import java.util.ResourceBundle;
 import java.util.stream.Collectors;
+import org.slf4j.LoggerFactory;
 
 /**
  * Controls the buttons and changeable elements on view_album.fxml,
@@ -45,12 +54,9 @@ public class ViewAlbum implements Initializable {
     public Button tbar_upload;
     public Button tbar_searchBtn;
     public Button tbar_albums;
-
     public Pane metadataPane;
     public Button createAlbumPdf;
-
     public ImageView mainPicture;
-
     public Text pictureTitleField;
     public Text pictureTagsField;
 
@@ -61,6 +67,7 @@ public class ViewAlbum implements Initializable {
     private AlbumService albumService;
     private Album currentAlbum;
 
+    
 
     /**
      * Initialize view with real album data.
diff --git a/src/main/java/NTNU/IDATT1002/repository/TagRepository.java b/src/main/java/NTNU/IDATT1002/repository/TagRepository.java
index 01579e79c0a913d72b26803f98158b00791e8c63..ccd0a78a1bca3780eceeed4d2abe1ff2b03498fd 100644
--- a/src/main/java/NTNU/IDATT1002/repository/TagRepository.java
+++ b/src/main/java/NTNU/IDATT1002/repository/TagRepository.java
@@ -32,7 +32,7 @@ public class TagRepository extends GenericRepository<Tag, Long> {
      * @return the tag if found, else the newly created one.
      */
     public Optional<Tag> findOrCreate(Tag tag) {
-        try {
+       try {
             Optional<Tag> foundTag = findById(tag.getTagId());
 
             if (foundTag.isPresent())
diff --git a/src/main/java/NTNU/IDATT1002/service/ImageService.java b/src/main/java/NTNU/IDATT1002/service/ImageService.java
index 4d45590fce68ba670ae0ec2b422bf0fede02570c..63607a2de743ad2c52e2ec14bf4b999c99b6dcea 100644
--- a/src/main/java/NTNU/IDATT1002/service/ImageService.java
+++ b/src/main/java/NTNU/IDATT1002/service/ImageService.java
@@ -5,6 +5,8 @@ import NTNU.IDATT1002.repository.*;
 import NTNU.IDATT1002.utils.ImageUtil;
 import NTNU.IDATT1002.utils.MetaDataExtractor;
 
+import java.util.Arrays;
+import javafx.scene.control.TextField;
 import javax.persistence.EntityManager;
 import java.io.File;
 import java.util.ArrayList;
@@ -21,22 +23,16 @@ import java.util.stream.Collectors;
 public class ImageService {
 
     private ImageRepository imageRepository;
-    private MetadataRepository metadataRepository;
-    private TagRepository tagRepository;
-    private HistorgramRepository historgramRepository;
-    private GeoLocatioRepository geoLocatioRepository;
     private MetaDataExtractor metaDataExtractor;
+    private TagService tagService;
 
     /**
      * Inject entity manager instance to the repositories.
      */
     public ImageService(EntityManager entityManager) {
         this.imageRepository = new ImageRepository(entityManager);
-        this.metadataRepository = new MetadataRepository(entityManager);
-        this.tagRepository = new TagRepository(entityManager);
-        this.historgramRepository = new HistorgramRepository(entityManager);
-        this.geoLocatioRepository = new GeoLocatioRepository(entityManager);
         this.metaDataExtractor = new MetaDataExtractor();
+        this.tagService = new TagService(entityManager);
     }
 
     /**
@@ -46,7 +42,7 @@ public class ImageService {
      * @param file the file uploaded
      * @return Optional containing the saved image
      */
-    public Optional<Image> createImage(User user, File file, ArrayList<Tag> tags) {
+    public Optional<Image> createImage(User user, File file, List<Tag> tags) {
 
         GeoLocation geoLocation = metaDataExtractor.getGeoLocation(file);
         Histogram histogram = metaDataExtractor.getHistogram(file);
@@ -61,18 +57,17 @@ public class ImageService {
 
         metadata.setHistogram(histogram);
         histogram.setMetadata(metadata);
-
-
         byte[] bFile = ImageUtil.convertToBytes(file.getPath());
 
         //TODO: Add image tags and add image to album
         image.setRawImage(bFile);
         image.setUser(user);
         image.setPath(file.getPath());
-        image.addTags(tags);
+        image.addTags((ArrayList<Tag>) tagService.getOrCreateTags(tags));
         return imageRepository.save(image);
     }
 
+
     /**
      * Finds each picture belonging to a specific user
      * @param user
@@ -91,25 +86,6 @@ public class ImageService {
         return imageRepository.findAll();
     }
 
-    /**
-     *  Adds the given tag to the given album.
-     *
-     * @param image the album to add the tag to
-     * @param tag the tag to add
-     * @return the updated album
-     */
-
-    public Optional<Image> addTagToImage(Image image, Tag tag) {
-        Image foundImage = imageRepository.findById(image.getId())
-                .orElseThrow(IllegalArgumentException::new);
-        Tag foundTag = tagRepository.findOrCreate(tag)
-                .orElseThrow(IllegalArgumentException::new);
-
-        foundImage.addTag(foundTag);
-
-        return imageRepository.save(foundImage);
-    }
-
     /**
      * Search all images by tags specified in {@link ImageFilter#filter(String)}.
      *
@@ -124,4 +100,7 @@ public class ImageService {
                 .filter(ImageFilter.filter(query))
                 .collect(Collectors.toList());
     }
+
+
+
 }
diff --git a/src/main/java/NTNU/IDATT1002/service/TagService.java b/src/main/java/NTNU/IDATT1002/service/TagService.java
index 2cc38805a75dccfc4c910acb04fafb5603310e93..f44132cb36567e5d0fa8555c020b4d4710c8909b 100644
--- a/src/main/java/NTNU/IDATT1002/service/TagService.java
+++ b/src/main/java/NTNU/IDATT1002/service/TagService.java
@@ -1,10 +1,16 @@
 package NTNU.IDATT1002.service;
 
+import NTNU.IDATT1002.models.Image;
 import NTNU.IDATT1002.models.Tag;
 
+import NTNU.IDATT1002.repository.ImageRepository;
+import NTNU.IDATT1002.repository.TagRepository;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import javax.persistence.EntityManager;
 
 
 /**
@@ -16,6 +22,15 @@ import java.util.stream.Stream;
  */
 public class TagService {
 
+TagRepository tagRepository;
+ImageRepository imageRepository;
+
+public TagService(EntityManager entityManager){
+    this.tagRepository = new TagRepository(entityManager);
+    this.imageRepository = new ImageRepository(entityManager);
+
+}
+
     /**
      * Retrieves tags from text field and converts them to a list of tag objects.
      *
@@ -42,4 +57,35 @@ public class TagService {
                 .map(Tag::getName)
                 .collect(Collectors.joining(", "));
     }
+
+    /**
+     * Gets or creates given tags in given ArrayList.
+     *
+     * @@author Lars Østby
+     * @param tags the list of tags
+     * @return an ArrayList of persisted tags
+     */
+    public  List<Tag> getOrCreateTags(List<Tag> tags) {
+        return tags.stream().map(tag -> tagRepository.findOrCreate(tag).orElse(null)).collect(Collectors.toList());
+    }
+
+
+    /**
+     *  Adds the given tag to the given album.
+     *
+     * @param image the album to add the tag to
+     * @param tag the tag to add
+     * @return the updated album
+     */
+
+    public Optional<Image> addTagToImage(Image image, Tag tag) {
+        Image foundImage = imageRepository.findById(image.getId())
+            .orElseThrow(IllegalArgumentException::new);
+        Tag foundTag = tagRepository.findOrCreate(tag)
+            .orElseThrow(IllegalArgumentException::new);
+
+        foundImage.addTag(foundTag);
+
+        return imageRepository.save(foundImage);
+    }
 }