try to improve macro