consistent calling sequence