allow hashes to be empty (e.g. events: {} )