recursive partial working