many updates to fit specific use cases