some progress on recursive