refactored run() into setup() and grow()