Add the list functions that will be used for memory pools.
Instead of using macros, use iterators built-in on each list for filtering and traversing.
Update initialization method.
Change the pool list initializations.
Add memory and data-related implementations for handling game data.