use records for components
use records instead of maps for components