Revert "Revert "Add functional""

This reverts commit b2cf6856fe786a005a78d8fb695151121ce20064.