Рекомендовать использовать библиотеку абстракции для многих обсуждаемых здесь функций, а также улучшить совместимость. Множество опций: