add `setup`. need to make this more dynamic, but not too dynamic