add recursive print