use simple hook methods instead of events