more flexible signature