added non-optional api