use trampoline and shortcut notation for fn