user adding functionality