#3: improved setup script