clean code
macro does everything