added macro pre-processor, still needs work