data can now be a function again