Extend API and add various enhancements