diff --git a/pykd/pykd_vc120.vcxproj b/pykd/pykd_vc120.vcxproj
index 796fbc6..c94a038 100644
--- a/pykd/pykd_vc120.vcxproj
+++ b/pykd/pykd_vc120.vcxproj
@@ -182,6 +182,7 @@
     <ClInclude Include="pykdver.h" />
     <ClInclude Include="pymemaccess.h" />
     <ClInclude Include="pymodule.h" />
+    <ClInclude Include="pyprocess.h" />
     <ClInclude Include="pysymengine.h" />
     <ClInclude Include="pythreadstate.h" />
     <ClInclude Include="pytypedvar.h" />
diff --git a/pykd/pykd_vc120.vcxproj.filters b/pykd/pykd_vc120.vcxproj.filters
index f3b0c40..682f2ca 100644
--- a/pykd/pykd_vc120.vcxproj.filters
+++ b/pykd/pykd_vc120.vcxproj.filters
@@ -75,6 +75,9 @@
     <ClInclude Include="pyevents.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="pyprocess.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="stdafx.cpp">
diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp
index f7b527d..343331c 100644
--- a/pykd/pymod.cpp
+++ b/pykd/pymod.cpp
@@ -519,7 +519,11 @@ BOOST_PYTHON_MODULE( pykd )
             "Return thread by its index" )
         .def("currentThread", TargetProcessAdapter::getCurrentThread,
             "Return current thread" )
-        ;
+        .def("getNumberBreakpoints", TargetProcessAdapter::getNumberBreakpoints,
+            "Return number of breakpoints for this process" )
+        .def("breakpoint", TargetProcessAdapter::getBreakpointByIndex,
+            "Return a breakpoint by it's index" )
+         ;
 
     python::class_<kdlib::TargetThread, kdlib::TargetThreadPtr, boost::noncopyable>("targetThread", "Class representing process in the target system", python::no_init )
         .add_property("systemID", TargetThreadAdapter::getSystemId,
@@ -528,6 +532,8 @@ BOOST_PYTHON_MODULE( pykd )
             "Return TEB address" )
         .def("setCurrent", TargetThreadAdapter::setCurrent,
             "Set this thread current")
+        .def("isCurrent", TargetThreadAdapter::isCurrent,
+            "Check if this thread is current")
         ;
 
     python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumBehavior>, boost::noncopyable>("module", "Class representing executable module", python::no_init )
diff --git a/pykd/pyprocess.h b/pykd/pyprocess.h
index 2ed4239..8d8c3c7 100644
--- a/pykd/pyprocess.h
+++ b/pykd/pyprocess.h
@@ -61,6 +61,18 @@ struct TargetProcessAdapter {
         AutoRestorePyState  pystate;
         return process.getCurrentThread();
     }
+
+    static unsigned long getNumberBreakpoints(kdlib::TargetProcess& process)
+    {
+        AutoRestorePyState  pystate;
+        return process.getNumberBreakpoints();
+    }
+
+    static kdlib::BreakpointPtr getBreakpointByIndex(kdlib::TargetProcess& process, unsigned long index)
+    {
+        AutoRestorePyState  pystate;
+        return process.getBreakpoint(index);
+    }
 };
 
 
@@ -83,6 +95,12 @@ struct TargetThreadAdapter {
         AutoRestorePyState  pystate;
         return thread.setCurrent();
     }
+
+    static bool isCurrent(kdlib::TargetThread& thread)
+    {
+        AutoRestorePyState  pystate;
+        return thread.isCurrent();
+    }
 };
 
 } // pykd namespace