adopt macro instead of SetInput call