update name in package
use async to divide request handling into logical chunks
do not allow users with empty name
condense format function