Implement functions
Revert "Implement functions"

This reverts commit 7df11dbfc9109d1ad10d640eb66b1a6f0e186ccd.
Revert "Revert "Implement functions""

This reverts commit 87add95cb4bd4c34b0f23d1623bfda155be8c8e3.