add recursive selector support