use associative arrays for better incremental development; avoid $()