add preserved callback feature