Revert "functions"

This reverts commit 696aaeddd44ef78f45f5cda955423a5950b73bd7.
Revert "Revert "functions""

This reverts commit 6535beccad89f7af532d43f42e2699d71dc1a5a0.