add support for long double