switch to 8 different attributes to avoid having to use eval() to get array behavior