diff --git a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java
index 867beae5ba8a4ab03d98e68b79d809777378445a..3cf08cd9417dbfe7ac3e7297d57f4aa623e0da89 100644
--- a/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java
+++ b/src/main/java/org/caosdb/server/grpc/CaosDBToGrpcConverters.java
@@ -622,7 +622,7 @@ public class CaosDBToGrpcConverters {
     String selector = s.getSelector();
     switch (selector) {
       case "name":
-        if (e.getName() != null) {
+        if (e.hasName()) {
           result.setScalarValue(ScalarValue.newBuilder().setStringValue(e.getName()));
         }
         break;
@@ -631,22 +631,72 @@ public class CaosDBToGrpcConverters {
         result.setScalarValue(ScalarValue.newBuilder().setStringValue(e.getId().toString()));
         break;
 
+      case "description":
+        if (e.hasDescription()) {
+          result.setScalarValue(ScalarValue.newBuilder().setStringValue(e.getDescription()));
+        }
+        break;
+
+      case "unit":
+        if (e.hasUnit()) {
+          final String unit = getStringUnit(e);
+          result.setScalarValue(ScalarValue.newBuilder().setStringValue(unit));
+        }
+        break;
+
+        // TODO path, hash
+
       default:
         // selector for a normal property
         for (Property p : e.getProperties()) {
-          if (p.getName() != null && p.getName().equals(selector) && s.getSubselection() == null) {
-            try {
-              p.parseValue();
-            } catch (Message m) {
-              throw new TransactionException(m);
-            }
-            if (!p.hasValue()) {
-              continue;
-            } else if (p.getValue() instanceof CollectionValue) {
-
+          if (p.getName() != null && p.getName().equals(selector)) {
+            if (s.getSubselection() == null) {
+              // no subselection -> just return the actual value
+              try {
+                p.parseValue();
+              } catch (Message m) {
+                throw new TransactionException(m);
+              }
+              if (!p.hasValue()) {
+                continue;
+              } else if (p.getValue() instanceof CollectionValue) {
+
+              } else if (p.getValue() instanceof GenericValue) {
+                if (((GenericValue) p.getValue()).getValue() instanceof Double) {
+                  result.setScalarValue(
+                      ScalarValue.newBuilder()
+                          .setDoubleValue((Double) ((GenericValue) p.getValue()).getValue()));
+                } else if (((GenericValue) p.getValue()).getValue() instanceof Integer) {
+                  result.setScalarValue(
+                      ScalarValue.newBuilder()
+                          .setIntegerValue((Integer) ((GenericValue) p.getValue()).getValue()));
+                } else {
+                  result.setScalarValue(
+                      ScalarValue.newBuilder().setStringValue(p.getValue().toString()));
+                }
+              } else if (p.getValue() instanceof BooleanValue) {
+                result.setScalarValue(
+                    ScalarValue.newBuilder()
+                        .setBooleanValue(((BooleanValue) p.getValue()).getValue()));
+
+              } else {
+                result.setScalarValue(
+                    ScalarValue.newBuilder().setStringValue(p.getValue().toString()));
+              }
             } else {
-              result.setScalarValue(
-                  ScalarValue.newBuilder().setStringValue(p.getValue().toString()));
+              // with subselection, e.g. p1.unit, site.geolocation.longitude
+              switch (s.getSubselection().getSelector()) {
+                case "unit":
+                  final String unit = getStringUnit(p);
+                  if (unit != null) {
+                    result.setScalarValue(ScalarValue.newBuilder().setStringValue(unit));
+                  }
+                  break;
+
+                  // TODO name, description, id
+                default:
+                  break;
+              }
             }
           }
         }