diff --git a/python-api-src/lib_unit.cpp b/python-api-src/lib_unit.cpp
index 90aedec40182dc55c38ff9ffcf3b0475694bab60..e796c3012e9888b20af605a039c669ca283073b1 100644
--- a/python-api-src/lib_unit.cpp
+++ b/python-api-src/lib_unit.cpp
@@ -29,8 +29,9 @@ void define_unit(py::module & m)
         .def("stop", &Unit::stop)
         .def("attack_unit", &Unit::attackUnit)
         .def("attack_move", &Unit::attackMove)
-        .def("ability", &Unit::ability)
-        .def("ability_at_target", &Unit::ability_at_target)
+        .def("ability", py::overload_cast<sc2::AbilityID>(&Unit::ability, py::const_))
+        .def("ability", py::overload_cast<sc2::AbilityID, const CCPosition &>(&Unit::ability, py::const_))
+        .def("ability", py::overload_cast<sc2::AbilityID, const Unit &>(&Unit::ability, py::const_))
         .def("move", py::overload_cast<const CCPosition &>(&Unit::move, py::const_))
         .def("move", py::overload_cast<const CCTilePosition &>(&Unit::move, py::const_))
         .def("right_click", &Unit::rightClick, "Same as right-clicking in the game, for example making workers mine minerals")
diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp
index cc20700acdb0ec6158aafe1437edeef832c257b7..4ba7a80114fed03f05b7b19b90cad63a29486926 100644
--- a/python-api-src/library.cpp
+++ b/python-api-src/library.cpp
@@ -85,10 +85,7 @@ PYBIND11_MODULE(library, m)
         .def_property_readonly("minerals", &IDABot::GetMinerals, "How much minerals we currently have")
         .def_property_readonly("current_supply", &IDABot::GetCurrentSupply, "How much supply we are currently using")
         .def_property_readonly("max_supply", &IDABot::GetMaxSupply, "How much supply we can currently use")
-        .def_property_readonly("gas", &IDABot::GetGas, "How much gas we currently have")
-        .def("use_ability", &IDABot::UseAbility, "Use an ability with the given unit")
-        .def("use_ability", &IDABot::UseAbilityWithPoint, "Use ability at point with the given unit")
-        .def("use_ability", &IDABot::UseAbilityWithTarget, "Use ability at target with the given unit");
+        .def_property_readonly("gas", &IDABot::GetGas, "How much gas we currently have");
 
     py::class_<sc2::PlayerSetup>(m, "PlayerSetup");
 
diff --git a/src/Common.h b/src/Common.h
index a8538c47bc7fc66de78c38eec2982bfa91e182f8..5d62b7bd71206bdb876a76080ba12cbd700cccbf 100644
--- a/src/Common.h
+++ b/src/Common.h
@@ -31,4 +31,4 @@ typedef size_t CCPlayer;
 namespace Players
 {
     enum {Self = 0u, Enemy = 1u, Neutral = 2u, Ally = 3u, Size = 4u, None = 5u};
-}
\ No newline at end of file
+}
diff --git a/src/IDABot.cpp b/src/IDABot.cpp
index 5705dffe94268775333d0223686a1952417ef31d..c12fe5ab76ceddd8b69575208806c514718c3265 100644
--- a/src/IDABot.cpp
+++ b/src/IDABot.cpp
@@ -218,18 +218,3 @@ const TypeData & IDABot::Data(const MetaType & type) const
 {
 	return m_techTree.getData(type);
 }
-
-void IDABot::UseAbility(const Unit& unit, sc2::AbilityID ability)
-{
-    Actions()->UnitCommand(unit.getUnitPtr(), ability, false);
-}
-
-void IDABot::UseAbilityWithPoint(const Unit& unit, sc2::AbilityID ability, const sc2::Point2D& point)
-{
-    Actions()->UnitCommand(unit.getUnitPtr(), ability, point, false);
-}
-
-void IDABot::UseAbilityWithTarget(const Unit& unit, sc2::AbilityID ability, const Unit* target)
-{
-    Actions()->UnitCommand(unit.getUnitPtr(), ability, target->getUnitPtr(), false);
-}
diff --git a/src/IDABot.h b/src/IDABot.h
index 100b581a5ba449b8c50df19e31b9b037b281e3af..eca954f01a1857bf31747ae128a239b86dc19e88 100644
--- a/src/IDABot.h
+++ b/src/IDABot.h
@@ -62,9 +62,4 @@ public:
     const TypeData & Data(const CCUpgrade & type) const;
     const TypeData & Data(const MetaType & type) const;
     const TypeData & Data(const Unit & unit) const;
-
-    // Used for giving "raw" commands to units
-    void UseAbility(const Unit& unit, sc2::AbilityID ability);
-    void UseAbilityWithPoint(const Unit& unit, sc2::AbilityID ability, const sc2::Point2D& point);
-    void UseAbilityWithTarget(const Unit& unit, sc2::AbilityID ability, const Unit* target);
 };
diff --git a/src/Unit.cpp b/src/Unit.cpp
index 224dc4d199fa01d3303388d806866c017e8f3d34..5d5ec6c8850b9906531ba8aae091e46c1a4e94b6 100644
--- a/src/Unit.cpp
+++ b/src/Unit.cpp
@@ -296,18 +296,6 @@ void Unit::morph(const UnitType & type) const
 	m_bot->Actions()->UnitCommand(m_unit, m_bot->Data(type).morphAbility);
 }
 
-void Unit::ability(sc2::AbilityID & ability) const
-{
-	BOT_ASSERT(isValid(), "Unit is not valid");
-	m_bot->Actions()->UnitCommand(m_unit, ability);
-}
-
-void Unit::ability_at_target(sc2::AbilityID & ability, const Unit & target) const
-{
-	BOT_ASSERT(isValid(), "Unit is not valid");
-	m_bot->Actions()->UnitCommand(m_unit, ability, target.getUnitPtr());
-}
-
 void Unit::research(sc2::UpgradeID upgrade) const
 {
     BOT_ASSERT(isValid(), "Unit is not valid");
@@ -319,3 +307,18 @@ bool Unit::isConstructing(const UnitType & type) const
 	sc2::AbilityID buildAbility = m_bot->Data(type).buildAbility;
 	return (getUnitPtr()->orders.size() > 0) && (getUnitPtr()->orders[0].ability_id == buildAbility);
 }
+
+void Unit::ability(sc2::AbilityID ability) const
+{
+    m_bot->Actions()->UnitCommand(getUnitPtr(), ability, false);
+}
+
+void Unit::ability(sc2::AbilityID ability, const sc2::Point2D& point) const
+{
+    m_bot->Actions()->UnitCommand(getUnitPtr(), ability, point, false);
+}
+
+void Unit::ability(sc2::AbilityID ability, const Unit& target) const
+{
+    m_bot->Actions()->UnitCommand(getUnitPtr(), ability, target.getUnitPtr(), false);
+}
diff --git a/src/Unit.h b/src/Unit.h
index 74b2b50a2d0be5636293eae47d0b23fc97861535..474428540635813596008cb9186a8db13b48c9f4 100644
--- a/src/Unit.h
+++ b/src/Unit.h
@@ -52,8 +52,6 @@ public:
     void attackUnit     (const Unit & target) const;
     void attackMove     (const CCPosition & targetPosition) const;
     void move           (const CCPosition & targetPosition) const;
-    void ability        (sc2::AbilityID & ability) const;
-    void ability_at_target (sc2::AbilityID & ability, const Unit & target) const;
     void move           (const CCTilePosition & targetTilePosition) const;
     void rightClick     (const Unit & target) const;
     void repair         (const Unit & target) const;
@@ -62,4 +60,7 @@ public:
     void train          (const UnitType & buildingType) const;
     void morph          (const UnitType & type) const;
     void research       (sc2::UpgradeID upgrade) const;
+    void ability        (sc2::AbilityID ability) const;
+    void ability        (sc2::AbilityID ability, const sc2::Point2D & point) const;
+    void ability        (sc2::AbilityID ability, const Unit & target) const;
 };