events trait + test + some other mess