FIXED: all compiler warnings
REFACTORED: cleaned up the macro names so they are easier to get right, and allow for STRUCT-based components later