worked on run()