Feature: Make setup script idempotent