added optional-key? fn