may want to consider using some of the array and reduce computed macros.