actually, key should never be null.