def _daemon():
    previous_getDVDState = 4 # this should insure only on rip is done
    while ( not xbmc.abortRequested ):
        xbmc.sleep( 250 )
        if xbmc.getDVDState() == 4 and previous_getDVDState != 4:
            utils.log( "Disc Detected, Checking for Movie Disc(s)", xbmc.LOGNOTICE )
            xbmc.sleep( 3000 )
            previous_getDVDState = xbmc.getDVDState()
            disc = makemkv.makeMKV( general_settings ).findDisc( general_settings[ "temp_folder" ] )
            if disc:
                utils.log( "Movie Disc Detected", xbmc.LOGNOTICE )
                if general_settings[ "movie_disc_insertion" ] == "Rip":
                    makeMKV().rip( disc )
                elif general_settings[ "movie_disc_insertion" ] == "Notify":
                    pass
                elif general_settings[ "movie_disc_insertion" ] == "Stream":
                    pass
                elif general_settings[ "movie_disc_insertion" ] == "Ask":
                    pass
                elif general_settings[ "movie_disc_insertion" ] == "Backup":
                    pass
                else: #do nothing
                    pass
        elif xbmc.getDVDState() !=4:
            previous_getDVDState = xbmc.getDVDState()
    def rip(self, discs):        
        log = logger.logger( "Rip", True )

        mkv_save_path = general_settings[ "temp_folder" ]
        mkv_tmp_output = general_settings[ "temp_folder" ]

        mkv_api = makemkv.makeMKV( general_settings )

        log.debug("Ripping started successfully")
        
        log.debug("%d Movie Disc%s found" % ( len(discs), ( "", "s" )[len(discs) > 1] ) )

        if (len(discs) > 0):
            # Best naming convention ever
            for disc in discs:
                mkv_api.setTitle(disc["discTitle"])
                mkv_api.setIndex(disc["discIndex"])

                movie_title = mkv_api.getTitle()

                if not xbmcvfs.exists( os.path.join(mkv_save_path, movie_title) ):
                    xbmcvfs.mkdir( os.path.join(mkv_save_path, movie_title) )

                    mkv_api.getDiscInfo()

                    with stopwatch.stopwatch() as t:
                        status = mkv_api.ripDisc(mkv_save_path, mkv_tmp_output)

                    if status:
                        if general_settings[ "eject_disc_upon_completion" ]:
                            xbmc.executebuiltin( "EjectTray()" )
                            
                        log.info("It took %s minute(s) to complete the ripping of %s" %
                             (t.minutes, movie_title)
                        )

                    else:
                        log.error("MakeMKV did not did not complete successfully")
                        log.error("See log for more details")
                        log.error("Movie title: %s" % movie_title)

                else:
                    log.info("Movie folder %s already exists" % movie_title)

        else:
            log.info("Could not find any Movie Discs in drive list")