functional version changes