Design objects to make invalid state impossible