updated for production use