refactored occasion constructor