supports backward compatibility