diff --git a/main.py b/main.py
index be0b0af623356cee5e587ceb4b77e70a6498a797..bc6917858b78072d1c1114b351c869675bdb12d8 100644
--- a/main.py
+++ b/main.py
@@ -1,6 +1,6 @@
 from sys import stderr
 
-from sqlalchemy.exc import SQLAlchemyError
+from sqlalchemy.exc import SQLAlchemyError, NoResultFound, MultipleResultsFound
 from movies import MovieDatabase, Movie, Genre
 
 from kivy.app import App
@@ -9,6 +9,7 @@ from kivy.properties import StringProperty
 
 class MoviesApp(App):
     message = StringProperty('')
+    name = StringProperty('')
 
     def __init__(self, **kwargs):
         super().__init__(**kwargs)
@@ -17,13 +18,77 @@ class MoviesApp(App):
         self.session = self.movie_database.create_session()
 
     def create_movie(self, title, action_selected, drama_selected, fantasy_selected):
-        pass
+        query = self.session.query(Genre).filter(Genre.name == 'Drama').one()
+        print(query.genre_id)
+        query = self.session.query(Genre).filter(Genre.name == 'Action').one()
+        print(query.genre_id)
+        query = self.session.query(Genre).filter(Genre.name == 'Fantasy').one()
+        print(query.genre_id)
+
+        try:
+            title_input = self.root.ids.title
+            title = title_input.text
+            genres = []
+            if action_selected:
+                genres.append(self.session.query(Genre).filter(Genre.name == 'Action').one())
+            if drama_selected:
+                genres.append(self.session.query(Genre).filter(Genre.name == 'Drama').one())
+            if fantasy_selected:
+                genres.append(self.session.query(Genre).filter(Genre.name == 'Fantasy').one())
+            new_movie = Movie(
+                title=self.name,
+                genres=genres,
+            )
+            self.session.add(new_movie)
+            self.session.commit()
+            self.message = f'Successfully created movie: {title}'
+        except NoResultFound:
+            self.message = 'Error Genre not found'
+        except MultipleResultsFound:
+            self.message = f'Error: Multiple movies with the same title "{title}" found.'
+        except SQLAlchemyError as e:
+            self.message = f'Error: {str(e)}'
 
     def update_movie(self, title, action_selected, drama_selected, fantasy_selected):
-        pass
+
+        try:
+            movie = self.session.query(Movie).filter(Movie.title == title).one()
+            genres = []
+            if action_selected:
+                genres.append(self.session.query(Genre).filter(Genre.name == 'Action').one())
+            if drama_selected:
+                genres.append(self.session.query(Genre).filter(Genre.name == 'Drama').one())
+            if fantasy_selected:
+                genres.append(self.session.query(Genre).filter(Genre.name == 'Fantasy').one())
+            Movie.genres = genres
+
+            self.session.add(movie)
+            self.session.commit()
+            self.message = f'Successfully updated movie: {title}'
+
+        except NoResultFound as e:
+            self.message = f'Error movie with tile {title} not found'
+        except MultipleResultsFound:
+            self.message = f'Error: Multiple movies with the same title "{title}" found.'
+        except SQLAlchemyError as e:
+            self.message = f'Error: {str(e)}'
 
     def delete_movie(self, title):
-        pass
+        try:
+            movies_to_delete = self.session.query(Movie).filter(Movie.title == title)
+
+            if movies_to_delete.count() == 0:
+                raise ValueError(f'Movie with title {title} was not found')
+
+            movies_to_delete.delete()
+
+            self.session.commit()
+
+            self.message = f'Successfully deleted movie(s) with title: {title}'
+        except NoResultFound as e:
+            self.message = f'Error: {str(e)}'
+        except SQLAlchemyError as e:
+            self.message = f'Error: {str(e)}'
 
 
 def main():