author can be nil