moved to maps for better structure, serialization, and data handling