really improve the lib