Create a functional version