updating for more general use