cover can be null.