forked from: Custom event and private classes

