extract livereload to separated task