basic functional update