improve __invoke by recursivity and make special tags selectable