Add support for custom property types .
Addresses #305