Initial commit of types and preprocessor