Use forward declarations where possible