moved recursive code of transparency and  reflection in  private methods