condense to one run() method