couldn't it accept any callable rather than just closures ?