refactored livereload