backtrack is a good one. i don't think its a place to start though.