more work on libm