base should always be callable