Caption can be an empty array or string, so use interface to account for it