update to modern syntax
add x-callback support