accept programmatic options. also, uh, maybe use a gitignore?