change description; improve code