setup and method run (INCOMPLETE)