State-aware programming