split setup from running for easy library integration