base APIs should be in place