simplfied callback logic