RegExp with padding for the numbers

Hi all

I have a column VARCHAR2 representing Article and paragraph of a document and I need to sort in a sophisticated this column method.

The problem is that because this value is from a form using free text, the format is quite heterogeneous. Then we would have something like:

select '1' as section from dual union all
select '7(1), 8(3)' as section from dual union all
select '9(2)(b)' as section from dual union all
select '11(1)(c)' as section from dual union all
select 'Annex VI' as section from dual;

the problem is that if we use the lexicographical order, that we'd end up with 11 front of 9.2 b (1)

select  section from (
select '1' as section from dual union all
select '7(1), 8(3)' as section from dual union all
select '9(2)(b)' as section from dual union all
select '11(1)(c)' as section from dual union all
select 'Annex VI' as section from dual)
order by 1;

SECTION
----------
1        
11(1)(c) 
7(1), 8(3)
9(2)(b)  
Annex VI 

It is true that articles go not beyond say 1000 thought I replace all the groups of digits of 0 left padded values. An expression that I would get the right result

select  section from (
select '001' as section from dual union all
select '007(001), 008(003)' as section from dual union all
select '009(002)(b)' as section from dual union all
select '011(01)(c)' as section from dual union all
select 'Annex VI' as section from dual)
order by 1;

SECTION

------------------

001

007 (001), 008 (003)

009 (002) (b)
011 (01) (c)
Annex VI

This can be achieved with regexp?, the thing is I can locate the numbers and normally the depth of numbers would be only 2 directions 1 (2) and no 1 (2) (3) so with 2 nested regexp_replace could be good. The thing is that I don't realize to fill in the 3rd parameter:

Best regards

Hello

Using REGEXP_REPLACE to fill in the numbers:

SELECT section

, REGEXP_REPLACE (REGEXP_REPLACE (section - for debugging only

, '(\d+)'

, "000\1".

)

, « 0+(\d{4}) »

, '\1'

) AS sort_str

ARTICLE

ORDER OF REGEXP_REPLACE (REGEXP_REPLACE (section

, '(\d+)'

, "000\1".

)

, « 0+(\d{4}) »

, '\1'

)

;

The inner REGEXP_REPLACE adds 3 major 0 ' to all numbers, so that all the numbers are at least 4 digits.

Removes from the external REGEXP_REPLACE 0 ' to all numbers, so that all numbers are exactly 4 digits.

In Production, you will not want to repeat the expression in the SELECT clause. I just did here to help us see what's going on.

Output:

SECTION SORT_STR

---------- ------------------------------

1 0001

7 (1), 8 (3) 0007 (0001) 0008 (0003)

9 2 b 0009 (0002) (b)

11.1 c 0011 (0001) (c)

Annex VI to annex VI

Tags: Database

Similar Questions

  • Just upgraded to Vista Home Premium to XP. Got a Packard Bell with RF for the Media Center remote control, worked fine with XP, but is no longer compatible with Vista.

    after update to XP media center units Vista remote control

    Just upgraded to Vista Home Premium to XP.  Got a Packard Bell with RF for the Media Center remote control, worked fine with XP, but is no longer compatible with Vista.  I checked the usb driver for the usb XF-10 rf remote receiver and it is fine, uninstalled and reinstalled it.  Handset was working fine a few days ago.  I also went in 'Administrator', 'services' and then active HID, but it still does not work.  Media works well, but it would be nice to have the operation of the remote control!  Not particularly computer, simply suggestions please!  Thank you, Nick.

    Hi Nicolas,

    I suggest you to check the battery. Additionally, make sure that you have installed the right drivers for you Consumer IR Port.

    For more information, you can check the link below,

    http://www.PackardBell.com/index.html

  • Is it safe to use Safe Mod with networking for the use of the computer every day?

    Hi, my computer has problems to start normally and I was wondering, is it safe to use Safe Mod with networking for the use of the computer every day? I use the computer like 10 hours + every day. Is this correct and safe? Thank you

    Hello, Winston,

    It is actually for troubleshooting only.

    Networking Mode safe mode starts Windows in mode safe mode and includes the network drivers and services needed to access the Internet or other computers on your network.

    Some applications may not work properly or not at all if you use safe mode with networking for everyday computing.

    Wireless network adapter may not work when you use the Option "Safe Mode with network.

    http://support.Microsoft.com/kb/305616

    Safe mode disables most of the processes and services running. These services include the Windows Update service. »

  • Can you please put me in touch with support for the trial version of adobe acrobat pro XI that I had tried on 15 March for 30 days. I tried to cancel because the cost is too, and Acrobat Reader are good for me. I can't uninstall program.

    Can you please put me in touch with support for the trial version of adobe acrobat pro XI that I had tried on 15 March for 30 days. I tried to cancel because the cost is too, and Acrobat Reader are good for me. I can't uninstall program.

    I had to wipe my drive since then with the trouble with Apple Store without acknowledging my machine and Time Machine reloading gave complications. Can you please cancel my trial and make my money from trial.

    Hi jack gordon.

    Adobe does not charge for the 30 day trial, but it seems that you have subscribed to Acrobat Pro (as a simple app for creative cloud membership) return March 15. To cancel your subscription, please contact customer service.

    Please let us know if you have any additional questions.

    Best,

    Sara

  • Problem with pdf for the opening of the health gov Web site.

    Problem with pdf for the opening of the health gov Web site. I use my ipad in Safari and have installed the application to adobreader. Healthcare gov support only suggested to disable the pop-up blocker. I did, and I couldn't always open the file. No problem on a desktop computer regardless of the browser.

    In my view, they spend on their web server to a document ECM server authentication. Someone else has the problem?

    I tried the Penguin, Chrome and Atomic browsers on the ipad and the same issue.

    Thank you!

    Keren

    Okay, actually, I think that there is a problem with the type of form. It is a form of a special kind (called a form XFA or Designer, for what it's worth), which can be opened with Adobe Reader and only on Mac or Windows. There is no iPad software that can read these.

  • select lines with garbage (not the numbers and point symbols)

    Hi all! I've got varchar2 column where users insert what they want. But this column is used for the value of numbers (from 0.00 to 100.00). How can I select only the number and the symbol dot:

    NVL (ABS (regexp_replace (Replace(Avalue,',','.'),'[^ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,.,]')), 0)

    Now, I need to select lines with symbols of the trash to correct errors. How do I "invert selection"? I mean by selecting only the lines that are composed of waste (except the numbers and the dot symbol).
    Thanks in advance.

    You can try this

    select trim(translate(replace(avalue,',','.'),'1234567890.','           ')) from dual
    

    If the symbols of the trash will be inserted then it will return that

  • Printer + storage networking with X 3000 (for internet) & E4200V2 (with bridge for the extension of coverage)

    Salam,

    Would someone please quite friendly and find out about the different ways to connect a printer to the X 3000.

    I could not find in the User Guide where it says or explains how to connect a printer to the X 3000, that is wireless, USB port, or directly through one of the LAN ports.  I also checked the product information for X 3000 on the CISCO Web site and it is referred to as StorageLink USB port.

    Another question. Recently, someone on these forums told me hot to connect an E1500 in Bridge mode to my X 3000 and you explain everything very well.  Since then, I have reconsidered and now I am looking to buy the E4200V2 for to connect bridge for my 3000 X instead of the E1500.  Correct me if I'm wrong but connect the E4200V2 to my 3000 X should be the same linking the E1500 my 3000 X, i.e. the bridge mode? Yes or no?

    And my last series of questions is rregarding what would be the best editing for adding a storage device and a printer to my network once I get the E4200V2 and configure it in Bridge mode?

    -Can I connect the printer storage and device to my E4200V2?

    -Should I connect both my X 3000, that provides my internet connection?

    -Should I connect to the X 3000 and the other for the E4200, if so, to which, for best set-up?

    I hope I'm not too ask.  Eagerly look forward to the answers.

    Abu Adam

    1. the X 3000 USB port is only for the storagelink. Not for printing.

    2. connect the E4200 in Bridge mode as the E1500.

    3. If you want the storage to be accessible from the internet, you need to connect to the X 3000. If you want only accessible from the local network you can connect to either the X 3000 or the E4200.

    4. a USB printer only goes with the E4200. However, if you printer has a network (wired or wireless) interface, I highly recommend to connect the printer via ethernet / wireless and not via the USB port through the router.

    5. as a general rule, you should be better off with the storage attached to the E4200 instead of the X 3000. In this way, the power of the processor of the E4200 can be used for storage handling and X 3000 can do the routing. But that obviously depends on the load at a time (that is how you use the storage) and the limits that you hit. Maybe it makes not a difference when you connect. The best way to know is to test...

  • various error messages - cannot get old matrix printer that works with xp for the printer in windows 7

    I have a new pc with windows 7 - I have an old panasonic kxp 3696 PARALLEL port printer that works fine with xp - I bought a decoder directional bi to convert the port PARALLEL to the usb port and is connected to my lenovo m81 - computer came with pre installed epson fx series 1 136 driver in the Inbox (this is the driver of windows 7 recommended by panasonic for this printer)-I managed to print a test page and something of Word-, I then downloaded our accounting software and added an hp printer - in the process, I removed the usb connection and later reinstalled anbother port - since then I could not print all documents or bills - I uninstalled and reinstalled the printer - I deleted and created ports - initially the docs crammed into a queue for printing - I then changed the setting to print online and print test page new - now I send documents to print and they do not appear in the print queue - it seems to be multiple of the printer on the computer copies when I reinstall - also get a message that is not network printer (the printer is connected by usb) and another message00? 0000? etc.

    I used the printer add - local port - function and then create a new port that I called epson - someone can talk me through the process in detail.

    specifically what port should I use (local or create new)? I used the port usb - is that correct?

    If I print a test page? I would be able to print documents?

    If I get epson 1 and exemplary epson 2 - has actually deleted the printer driver?

    Please note I have contacted panasonic who can't stand the printer-I called epson that does not support the old drivers and lenovo that says it's a software problem talk to microsoft.

    We also run windows 7 64 bit in xp for the printer mode if so? How?

    Hello

    I suggest you to uninstall the printer drivers and then use the driver file that you want to install by using the procedure - below

    a. click Start, click Control Panel , and search for printers , and then double-click Printers.
    b. now, click Add Printer.
    c. Select Add a local printer and click create a new port.
    d. Select Local Port and click Next.
    e. type in "[\\computer name\printer name]"(sans les guillemets) for the Port name and click OK. ""
    f. follow the instructions to complete the installation. During the installation, when you are prompted to choose a good driver; Click the "disk".
    g. navigate to the driver file that you have on the computer, and then click OK. Now, check if the printer is correctly installed.

    I hope this helps.

  • Drag and drop with audio for the success or failure for each object

    Captivate 7

    I saw Pooja video on at least 20 times, literally, but I can't yet find the complete instructions anywhere. Not even in things, I spent a lot of money on. Ouch.

    ed.png

    I want to drag "ed" & "and" and get a snap sound as they settle. I got it work. But when he moves the words in the wrong location, I want a sound alert, allowing them to know that it is a mistake and do not want the box to accept the term.

    Sometimes video of Pooja, but it does not show how. I'm pulling out my hair. Soon it will get ugly around here.

    Sorry for that, I always use advanced actions and sometimes forget (late in the evening) that everyone knows with them.

    If you want to only play an audio clip when an object is moved and don't need a legend to appear or are happy with a legend of single failure (you can check that a new that), you can replace the command execute measures advanced in the screenshot of the other thread in "Play Audio"... »

    I've used here a clip audio, available with Captivate in the Gallery\Sounds

    Lilybiri

    PS: Since the CP6 I use the word "container" instead of legend because the text can be inserted, not only in the text captions, but also in the forms (my favorite)

  • Please help, blonde with fields for the calculation of evil!

    URGENT


    I have a question that needs urgent care


    On Adobe Acrobat 9 Pro that I've created a form through import the excel file in adobe, not the help of live program designer. I'm having the problem that the computation of a field based on another field of calculation, it will not always update regularly or properly. When it doesn't, I have to go back and edit form fields, and redo the calculations. This form is intended for multiple users and I need properties to work properly each time, not been hit and Miss. In this case, the purpose of the document is to take different calculations of each page, add the total find VAT on this amount and it amounted to a total. Those are the numbers that continue to change due to the subtotals not automatically updated when a quantity or price has changed.


    Any advice would be most appreciated.


    Very Happy

    Unlike in Excel, in forms Acrobat the field calculation order is not

    determines automatically. So, if you have a field that is, for example, the

    the sum of the fields B and C, then field D which is has * 0.15, if D is not

    After A calculated, it will result in incorrect values.

    To correct this select the object selection tool and then go to the forms - Edit

    Fields - Set field calculation order... and there, change the order of the

    fields in the list to match the desired calculation order.

  • [8i] help with function with parameters (for the calculation of the work)

    Let me start by saying, I've never written a function before, and I do not have access to create a feature in my database (that is, I can't test this feature). I am trying to achieve a function I can ask my IT Department to add for me. I hope that someone can take a look at what I wrote and tell me if this should work or not, and if it's the right way to go to solve my problem.

    I'm creating a function to make a very simple calculation of work (add/subtract a number of days to a date in the calendar).

    The database, I work with has a table with the schedule of work. Here is a sample table and sample data, representative of what is in my work table calendar:
    CREATE TABLE caln
    (     clndr_dt     DATE,
         shop_days     NUMBER(5)
         CONSTRAINT caln_pk PRIMARY KEY (clndr_dt)
    );
    
    INSERT INTO     caln
    VALUES (To_Date('01/01/1980','mm/dd/yyyy'),0);
    INSERT INTO     caln
    VALUES (To_Date('01/02/1980','mm/dd/yyyy'),1);
    INSERT INTO     caln
    VALUES (To_Date('01/03/1980','mm/dd/yyyy'),2);
    INSERT INTO     caln
    VALUES (To_Date('01/04/1980','mm/dd/yyyy'),3);
    INSERT INTO     caln
    VALUES (To_Date('01/05/1980','mm/dd/yyyy'),3);
    INSERT INTO     caln
    VALUES (To_Date('01/06/1980','mm/dd/yyyy'),3);
    INSERT INTO     caln
    VALUES (To_Date('01/07/1980','mm/dd/yyyy'),4);
    INSERT INTO     caln
    VALUES (To_Date('01/08/1980','mm/dd/yyyy'),5);
    INSERT INTO     caln
    VALUES (To_Date('01/09/1980','mm/dd/yyyy'),6);
    INSERT INTO     caln
    VALUES (To_Date('01/10/1980','mm/dd/yyyy'),7);
    INSERT INTO     caln
    VALUES (To_Date('01/11/1980','mm/dd/yyyy'),8);
    INSERT INTO     caln
    VALUES (To_Date('01/12/1980','mm/dd/yyyy'),8);
    INSERT INTO     caln
    VALUES (To_Date('01/13/1980','mm/dd/yyyy'),8);
    INSERT INTO     caln
    VALUES (To_Date('01/14/1980','mm/dd/yyyy'),9);
    The table includes since 01/01/1980 but 31/12/2015.

    I have written (and validated) this parameter query that performs the calculation of my working day (mday):
    SELECT     cal.clndr_dt
    FROM     CALN cal
    ,     (
         SELECT     cal.shop_days+:mdays     AS new_shop_days
         FROM     CALN cal
         WHERE     cal.clndr_dt     =:start_date
         ) a
    WHERE     cal.shop_days     = a.new_shop_days
    AND     ROWNUM          =1
    ORDER BY     cal.clndr_dt;
    Based on this request, I created the following function (and I have no idea if it works or if the syntax is right, etc..):
    CREATE OR REPLACE FUNCTION add_mdays 
         (start_date     IN DATE,
         mdays          IN NUMBER(5))
    RETURN     DATE 
    IS
         new_date DATE;
    BEGIN
    
         SELECT     cal.clndr_dt
         FROM     CALN cal
         ,     (
              SELECT     cal.shop_days+mdays     AS new_shop_days
              FROM     CALN cal
              WHERE     cal.clndr_dt     =start_date
              ) a
         WHERE     cal.shop_days     = a.new_shop_days
         AND     ROWNUM          =1
         ORDER BY     cal.clndr_dt;
    
         RETURN     new_date;
    
    END add_mdays;  //edit 9:31 AM - noticed I left off this bit
    I'm also not sure how to do to have the function handle results that would return a date outside the range of dates that appear in the table (prior to 01/01/1980 or after until 31/12/2015 - or, another way to look at what was, before the caln.clndr_dt or the caln.clndr_dt MAX value MIN value).

    My goal is to be able to use the function in a situation similar to the following:

    First of all, here is a sample table and data:
    CREATE TABLE orders
    (     ord_no          NUMBER(5),
         plan_start_dt     DATE,
         CONSTRAINT orders_pk PRIMARY KEY (ord_no)
    );
    
    INSERT INTO orders
    VALUES (1,To_Date('01/08/1980','mm/dd/yyyy'));
    INSERT INTO orders
    VALUES (2,To_Date('01/09/1980','mm/dd/yyyy'));
    INSERT INTO orders
    VALUES (3,To_Date('01/10/1980','mm/dd/yyyy'));
    And here's how I would use my function:
    SELECT     orders.ord_no
    ,     orders.plan_start_dt
    ,     add_mdays(orders.plan_start_dt, -3) AS prep_date
    FROM     orders
    Thus, the function would allow me to come back, for each command in my table of orders, the date is 3 days working (mdays) before the start of the plan of each order.

    I go about it the right way? I have to create a function to do this, or is there a way for me to integrate my request (which makes my mday calculation) in the example query above (eliminating the need to create a function)?

    Thank you very much in advance!

    Published by: user11033437 on February 2, 2010 08:55
    Fixed some typos in the last insert statements

    Published by: user11033437 on February 2, 2010 09:31 (fixed some syntax in the function)

    Hello

    Ah, referring to Oracle 8 and is not not able to test your own code makes me nostalgic for the good old days, when you have entered your cards and led to a window to the computer center and waited an hour for the work to be performed and then seen printing to find that you had made a typo.

    If you write functions, you should really test yourself. Like all codes, functions forge be written small not: write a line or two (or sometimes just a part of what would later become a single line), test, make sure it is running properly and repeat.
    Ideally, your employer must create a pattern of development in a development database that you can use.
    You can legally download your own instance of Oracle Express Edition free; just be careful not to use features that are not available in the database where the code will be deployed.

    You need a function to get the desired results:

    SELECT       o.ord_no
    ,       o.plan_start_dt
    ,       MIN (e.clndr_dt)     AS prep_date
    FROM       orders     o
    ,       caln          l
    ,       caln          e
    WHERE       l.clndr_dt     = o.plan_start_dt
    AND       e.shop_days     = l.shop_days - 3
    GROUP BY  o.ord_no
    ,            o.plan_start_dt
    ;
    

    It would be more effective (and somewhat simpler) If you've added a column (let's call it work_day) identified whether each line represents a work_day or not.
    For each value of shop_days, exactly 1 row will be considered as a working day.
    Then, the query may be something like:

    SELECT       o.ord_no
    ,       o.plan_start_dt
    ,       e.clndr_dt          AS prep_date
    FROM       orders     o
    ,       caln          l
    ,       caln          e
    WHERE       l.clndr_dt     = o.plan_start_dt
    AND       e.shop_days     = l.shop_days - 3
    AND       e.work_day     = 1
    ;
    

    You can use the analytic LAG function to populate the work_day column.

    A function would certainly be useful, although perhaps slower.

    The function you have posted has some errors:
    an argument can be stated under NUMBER (5); Just NUMBER.
    (b) when you SELECT in PL/SQL, as you do, you must SELECT a variable to store the results.
    (c) ROWNUM is arbitrary (making it useless in this problem) unless you draw a neat subquery. I don't think you can use ORDER BY in subqueries in Oracle 8. Use the ROW_NUMBER analytic function.
    (d) the service must end with an END statement.

    Given your current caln table, here's how I would write the function:

    CREATE OR REPLACE FUNCTION add_mdays
         ( start_date     IN           DATE          DEFAULT     SYSDATE,
           mdays          IN           NUMBER          DEFAULT     1
         )
    RETURN     DATE
    DETERMINISTIC
    IS
         --     add_mdays returns the DATE that is mdays working days
         --     after start_date.  (If mdays < 0, the DATE returned
         --     will be before start_date).
         --     Work days do not include Saturdays, Sundays or holidays
         --     as indicated in the caln table.
    
         new_date     DATE;          -- to be returned
    BEGIN
    
         SELECT     MIN (t.clndr_dt)
         INTO     new_date
         FROM     caln     f     -- f stands for "from"
         ,     caln     t     -- t stands for "to"
         WHERE     f.clndr_dt     = TRUNC (start_date)
         AND     t.shop_days     = f.shop_days + TRUNC (mdays)
         ;
    
         RETURN     new_date;
    END     add_mdays;
    /
    SHOW ERRORS
    

    Production code forge be robust (which includes "fool-proofing").
    Try to anticipate what people errors might appeal to your function and correct for them where possible.
    For example, if it only makes sense for start_date at midnight, mdays to be an integer, use TRUNC in the function where soembody passes a good value.
    Allow default arguments.
    Comment of your function. Put all comments within the service (i.e. after CREATION and before the END) so that they will remain in the data dictionary.
    If, given the same arguments, the function always returns the same value, mark it as DETERMINISTIC, for efficiency. This means that the system will remember the values transmitted rather than to call the function whenever it is said to.

    I wish I could score questions such as 'Correct' or 'useful '; you get 10 points for sure.
    You posted CREATE TABLE and INSERT statements (without even be begged).
    You gave a clear description of the problem, including the expected results.
    The code is well formatted and easy to read.
    All around, one of the more thoughtful and well written questions I've seen.
    Play well! Keep up the good work!

    Published by: Frank Kulash, February 2, 2010 13:10
    Added to my own version of the function.

  • problem with webcam for the HP 3125 basic model

    Hey readers, I've got this beautiful model HP 3125 basic and has a webcam at the top of the screen but could not find any original progams HP for this, also could not find it in download drivers, anyone know a camera trust hp progam, please help, thank YOU!

    Hello:

    It is the most widely used software for the webcam in HP laptops.

    http://h10025.www1.HP.com/ewfrf/wc/softwareDownloadIndex?softwareitem=ob-109796-1&cc=us&DLC=en&LC=en&JumpID=reg_r1002_usen_c-001_title_r0008

  • Add text to a document, the font for the numbers won't change - remember to come to the top in an Arab cast to research!

    Untitled.jpg

    The numbers that I typed in are in red. I've tried many types of fonts, but it still shows that the above. Don't know what I'm doing wrong, any advice is gladly received. Thank you!

    I use Adobe Acrobat DC

    Hi Grace,

    Press Ctrl-K or go to preferences in the Edit menu, go to languages and uncheck "Hindi numbers" under "Edit text in the languages of the Middle East".

    I would like to know if it works.

    Kind regards

    Nicos

  • Help with buttons for the slideshow

    I'm working on my first flash project.  I created a simple slideshow image 4.  I have created 4 buttons that when clicked, jump to this image in the panel mounting.  I added rollover States for the button. Everything works as I want it.

    My question is how can I get the buttons to have a different look when this particular image is active?

    For example.  When the slideshow is on the 2nd picture, I want 2 button to have an active state (different look as the other three buttons).

    Here's my project file.

    Thank you

    You must use the movieclip buttons.

  • I can't sync my phone I have with my I - pad for FaceTime... How can I use the I - pad for the big screen? Thank you!

    I can't sync my I-phone (I - phone 5) with my I - Pad Mini for Face Time... of ideas? Thank you!

    I'm confused... you need not so much to do something

    http://help.Apple.com/iPad/9/#/iPad6b71e29e < make and receive calls FaceTime

Maybe you are looking for

  • set the selector button for apple 4g speed

    need to get a button installed in order to call fast with just one click without the help of the keyboard

  • Nighthawk R7000 wireless option not available

    I have a R7000 I used for a while with no problems. Tonight the wireless stopped working. The checkbox "allow wireless router radio" is grayed out and unavailable. Check the logs I noticed a firmwear pass this afternoon to v1.0.4.30_1.1.67. Any sugge

  • Update Error 80070426 - Vista

    Original title: ERROR 80070426 CODE I have Windows Vista and my computer became very slow.  I got a message today that the Microsoft updates could not be installed.  I get the ERROR 80070426.  What can I do?

  • HP G70 120EM: don't start mngr missing, no recovery disk

    My cousin had tried to restore the computer to factory settings it has recently made more.   During the process, he has failed and now does not start with "Boot Mngr missing" without recovery disks are available (if ever made) so the only recovery sy

  • 10 questions with Ant Build QNX BlackBerry + PhoneGap (Córdoba)

    Hello; I am experienced in creating applications for the BlackBerry platform and am currently deploy a sample application with PhoneGap (Córdoba) with BlackBerry WebWorks for the BlackBerry 10 Beta (QNX) , without great success. I'm following the ins