added "open" callback