why use preconditions for only one of these three methods?