more strict api