Slightly modified function.