refactor out descriptor