better support for floating point precision (closes #6)