diff --git a/arbor/cable_cell_param.cpp b/arbor/cable_cell_param.cpp
index 7f343967b22466abc64bac2485bd97dc7113500a..0868f410e321e90e93665ffbab7732e5f45cf923 100644
--- a/arbor/cable_cell_param.cpp
+++ b/arbor/cable_cell_param.cpp
@@ -134,9 +134,6 @@ void decor::set_default(defaultable what) {
                 else if constexpr (std::is_same_v<membrane_capacitance, T>) {
                     defaults_.membrane_capacitance = p.value;
                 }
-                else if constexpr (std::is_same_v<initial_ion_data, T>) {
-                    defaults_.ion_data[p.ion] = p.initial;
-                }
                 else if constexpr (std::is_same_v<init_int_concentration, T>) {
                     defaults_.ion_data[p.ion].init_int_concentration = p.value;
                 }
diff --git a/arbor/include/arbor/cable_cell_param.hpp b/arbor/include/arbor/cable_cell_param.hpp
index b98421902f8db7c1dff49b2607ae802c981fb1f0..edd9a0427418d3d3049068d522473559465c7c39 100644
--- a/arbor/include/arbor/cable_cell_param.hpp
+++ b/arbor/include/arbor/cable_cell_param.hpp
@@ -160,11 +160,6 @@ private:
     std::unordered_map<std::string, double> param_;
 };
 
-struct initial_ion_data {
-    std::string ion;
-    cable_cell_ion_data initial;
-};
-
 struct ion_reversal_potential_method {
     std::string ion;
     mechanism_desc method;
@@ -191,7 +186,6 @@ using defaultable =
                  axial_resistivity,
                  temperature_K,
                  membrane_capacitance,
-                 initial_ion_data,
                  init_int_concentration,
                  init_ext_concentration,
                  init_reversal_potential,
diff --git a/python/cells.cpp b/python/cells.cpp
index 493409acbe957d65e998446124210124dd4c60fa..2d9589b31a541e12815eb8e3d2dc8a7c9d06e754 100644
--- a/python/cells.cpp
+++ b/python/cells.cpp
@@ -315,32 +315,6 @@ void register_cells(pybind11::module& m) {
         .def("__str__", [](const arb::threshold_detector& d){
             return util::pprintf("(threshold_detector {})", d.threshold);});
 
-    // arb::cable_cell_ion_data
-
-    pybind11::class_<arb::initial_ion_data> ion_data(m, "ion",
-        "For setting ion properties (internal and external concentration and reversal potential) on cells and regions.");
-    ion_data
-        .def(pybind11::init(
-                [](const char* name,
-                   optional<double> int_con,
-                   optional<double> ext_con,
-                   optional<double> rev_pot)
-                {
-                    arb::initial_ion_data x;
-                    x.ion = name;
-                    if (int_con) x.initial.init_int_concentration = *int_con;
-                    if (ext_con) x.initial.init_ext_concentration = *ext_con;
-                    if (rev_pot) x.initial.init_reversal_potential = *rev_pot;
-                    return x;
-                }
-            ),
-            "ion_name"_a,
-            pybind11::arg_v("int_con", pybind11::none(), "Intial internal concentration [mM]"),
-            pybind11::arg_v("ext_con", pybind11::none(), "Intial external concentration [mM]"),
-            pybind11::arg_v("rev_pot", pybind11::none(), "Intial reversal potential [mV]"),
-            "If concentrations or reversal potential are specified as 'None',"
-            " cell default or global default value will be used, in that order if set.");
-
     // arb::cable_cell_global_properties
 
     pybind11::class_<arb::cable_cell_global_properties> gprop(m, "cable_global_properties");