use functorial interface by default (log value = first-class module)