partway to recursive