incorporating dschult set method suggestions... with significant increase in speed