diff --git a/modules/conop/pymod/export_compound.cc b/modules/conop/pymod/export_compound.cc
index 6e95a0c246ebf854506e478cff94eaac91832bcb..d39a05a840570f31e466fee3757ab9ed7e3c8882 100644
--- a/modules/conop/pymod/export_compound.cc
+++ b/modules/conop/pymod/export_compound.cc
@@ -20,39 +20,105 @@
 #include <boost/python/register_ptr_to_python.hpp>
 #include <boost/python/suite/indexing/vector_indexing_suite.hpp>
 using namespace boost::python;
+
 #include <ost/conop/compound.hh>
 #include <ost/conop/compound_lib.hh>
-
+using namespace ost::mol;
 using namespace ost::conop;
 
+namespace {
+
+Compound::Dialect tr_dialect(const String& dialect)
+{
+  if (dialect=="PDB") {
+    return Compound::PDB;
+  }
+  if (dialect=="CHARMM") {
+    return Compound::CHARMM;
+  }
+  if (dialect=="OPLS") {
+    return Compound::OPLS;
+  }
+  if (dialect=="AMBER") {
+    return Compound::AMBER;
+  }
+  std::stringstream ss;
+  ss << "unknown compound dialect '" << dialect << "'";
+  throw std::runtime_error(ss.str());
+}
+
+void set_dialect(CompoundPtr compound, const String& dialect)
+{
+  compound->SetDialect(tr_dialect(dialect));
+}
+
+char get_chemclass(CompoundPtr compound)
+{
+  return char(compound->GetChemClass());
+}
+
+void set_chemclass(CompoundPtr compound, char cc)
+{
+  compound->SetChemClass(ChemClass(cc));
+}
+
+CompoundPtr find_compound(CompoundLibPtr comp_lib, 
+                          const String& tlc, const String& dialect)
+{
+  return comp_lib->FindCompound(tlc, tr_dialect(dialect));
+}
+
+}
 void export_Compound() {
-  class_<Compound>("Compound", no_init)
+
+  class_<Compound, CompoundPtr>("Compound", no_init)
     .def("GetID", &Compound::GetID, 
          return_value_policy<copy_const_reference>())
     .def("SetOneLetterCode", &Compound::SetOneLetterCode)
     .def("GetOneLetterCode", &Compound::GetOneLetterCode)
+
+    .add_property("three_letter_code", make_function(&Compound::GetID, return_value_policy<copy_const_reference>()))
+    .add_property("id", make_function(&Compound::GetID, return_value_policy<copy_const_reference>()))    
     .add_property("one_letter_code", &Compound::GetOneLetterCode, 
-                  &Compound::SetOneLetterCode)
+                  &Compound::SetOneLetterCode)                  
     .def("GetAtomSpecs", &Compound::GetAtomSpecs,
          return_value_policy<copy_const_reference>())
+    .def("bond_specs", make_function(&Compound::GetBondSpecs,
+         return_value_policy<copy_const_reference>()))         
+    .def("atom_specs", make_function(&Compound::GetAtomSpecs,
+         return_value_policy<copy_const_reference>()))
+    .def("AddAtom", &Compound::AddAtom)
+    .def("AddBond", &Compound::AddBond)
+    .def("IsPeptideLinking", &Compound::IsPeptideLinking)
+    .add_property("chem_class", &get_chemclass,
+                  &set_chemclass)
+    .add_property("formula",make_function(&Compound::GetFormula, 
+                  return_value_policy<copy_const_reference>()),
+                  &Compound::SetFormula)
+    .add_property("dialect", &Compound::GetDialectAsString, 
+                  &set_dialect)
   ;
   
   class_<AtomSpec>("AtomSpec", no_init)
     .def_readonly("element", &AtomSpec::element)
-    .def_readonly("name", &AtomSpec::name)    
+    .def_readonly("name", &AtomSpec::name)
     .def_readonly("alt_name", &AtomSpec::alt_name)
-    .def_readonly("is_leaving", &AtomSpec::is_leaving)    
+    .def_readonly("is_leaving", &AtomSpec::is_leaving)
+    .def_readonly("is_aromatic", &AtomSpec::is_aromatic)
+    .def_readonly("ordinal", &AtomSpec::ordinal)
   ;
   
   class_<BondSpec>("BondSpec", no_init)
     .def_readonly("atom_one", &BondSpec::atom_one)
     .def_readonly("atom_two", &BondSpec::atom_two)    
+    .def_readonly("border", &BondSpec::order)
+
   ;  
-  register_ptr_to_python<CompoundPtr>();  
-  
+
   class_<CompoundLib>("CompoundLib", no_init)
     .def("Load", &CompoundLib::Load, arg("readonly")=true).staticmethod("Load")
-    .def("FindCompound", &CompoundLib::FindCompound)
+    .def("FindCompound", &find_compound, 
+         (arg("tlc"), arg("dialect")="PDB"))
     .def("ClearCache", &CompoundLib::ClearCache)
   ;