add recursive component lookup