First pass at prototypes and macros.