change event mechanism to fit discrete behaviour