improve list macro