updated according to feedback