can be forward declared