Contracts for non-Void-safe users (take 2)