Completely refactored how blocks and macros work