add err handleing