more sensible defaults

- default to 1 processing thread for single core machines
- create utility class for vm property access