direct version