code separated into definitions, declarations, and headers