Whenable events implementation