boilerplate C