Change program::build() to return void
Add user_event class