don't use events, call it directly.