lots of nice ehancements to improve preformance and usefulness