SPA-3102 sending bad "From" field

I'm using some SPA-3102's (5.1.7 GW firmware) and am getting "Error 400: BAD REQUEST (multiple values in single-value header) FROM" responses from my PBX.
According to packets grabbed by wireshark, the INVITE from the 3102 goes out  with the following FROM field:
From: MACKEY, RON E <sip:[email protected]>;tag=b9c8ff5d2616dc03o1
The ASCII version:
0000   46 72 6f 6d 3a 20 4d 41 43 4b 45 59 2c 20 52 4f  From: MACKEY, RO
0010   4e 20 45 20 3c 73 69 70 3a 36 33 30 33 35 37 38  N E <sip:6303578
0020   31 33 35 40 31 39 32 2e 31 36 38 2e 32 2e 31 33  [email protected]
0030   32 3e 3b 74 61 67 3d 62 39 63 38 66 66 35 64 32  2>;tag=b9c8ff5d2
0040   36 31 36 64 63 30 33 6f 31 0d 0a                 616dc03o1..
My reading of the SIP RFC (and it's been a long time since I read an RFC) says that a display-name containing a comma must be enclosed in "".   This would seem to be confirmed by the bad request response from the IP-PBX.
Two questions:
1.  Is this an error in the 3102?
2.  In either case, is there any way to prevent the 3102 from sending the  display-name?
Thanks,
Ron

Thanks for the reply. 
Setting "Escape Display Name" to "Yes" had no effect.
In this scenario, the display name is picked up from the incoming phone company Caller ID, so I can't figure out how to blank it out without also losing the caller ID information.
I'm going from a POTS line --> PSTN 1 (on the 3102) --> 3CX (PBX software).   I'm using wireshark to verify that the packets coming from the SPA-3102 are just mirroring what's coming in from the phone company.   So, in my case, any name that comes in with the form "last name, first name" gets dropped by 3CX as improperly formatted.
Best regards,
Ron

Similar Messages

  • Disable calling name presentation on SPA-3102

    Hi,
    If I send a SIP INVITE to my SPA-3102, where the From header is like this -- (spaces inserted to stop the forum software treating it as an email address -- they're not there in the real invite)
    From: Caller Name <01234567890 @ my.sip.server.net>;tag=as4b617ab1
    -- the SPA-3102 generates a Caller ID spill on its FXS port with 'Caller Name' as the calling name, and '01234567890' as the calling number. That's all well and good.
    If the From: header doesn't have a caller name, but is like this instead --
    From: <01234567890 @ my.sip.server.net>;tag=as4b617ab1
    -- the box sets the calling name to be 01234567890 as well.
    Is there any way to turn that off, and have the SPA just not present a calling name at all?
    If not, no bother! I'm just trying to get my box to behave a little more like BT with regards to caller ID presentation -- they don't ever send a reason for no calling *name*, but if the calling number is withheld or unavailable they will set the calling name to Withheld or Unavailable -- and set a reason for no calling number.
    Many thanks!
    Martin
    Message was edited by: Martin Thorpe -- hopefully removed the auto-'email address' tagging! (Argh, no, it didn't. Bodged a different way.)

    Hi Lindsey,
    Thanks for the quick response. Here's a complete SIP invite -- I've changed the telephone number and put spaces around @ signs again, but everything else is unmodified.
    INVITE sip:spa-line1 @ 81.2.113.115:5060 SIP/2.0
    Via: SIP/2.0/UDP 81.187.239.177:5060;branch=z9hG4bK4062e0e9;rport
    Max-Forwards: 70
    From: ;tag=as75e22314
    To:
    Contact:
    Call-ID: 445f75c33908fff74829a514159e9946 @ sentry.met24.net
    CSeq: 102 INVITE
    User-Agent: Asterisk
    Date: Mon, 29 Oct 2012 19:51:07 GMT
    Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
    Supported: replaces, timer
    Content-Type: application/sdp
    Content-Length: 286
    So there is a contact field in there as well.
    That's from a slightly patched Asterisk server, which doesn't put a calling name in if it's blank -- by default if you didn't set a calling name, Asterisk will also set the calling name from the calling number and you'd get this instead:
    From: "01234567890" ;tag=as54c7bb08
    I've done product management myself so I know one customer asking for it to work a little differently (as opposed to it doing something wrong!) isn't going to make a change -- that's no problem at all. If it were to be changed, I'd rather the ATA didn't generate a calling name field in the CLID spill at all, rather than 'Unknown'. But hey, that's just my opinion!
    For the avoidance of doubt, the ATA is always generating the calling *number* field in the CLID spill correctly.
    Thanks again!
    All the best,
    Martin

  • How to use alias in "From" field when I send a mail with utl_smtp ?

    Hi all,
    I'm using a PL/SQL package with an Oracle 11G database to send mails. It works fine but instead of use of my mail in "From" field like "[email protected]" as sender E-mail address, I would like to have "Toto" in the sender address. I tryied to use utl_smtp.mail(l_connection, '<toto> [email protected]') but it doesn't work. The only way I can send mail is when I set utl_smtp.mail(l_connection, '<[email protected]>') directly. When I use the Alias, I have an error from smtp server telling that I use a bad syntax address.
    Does someone know how to use the alias ? Where do I do a mistake ?
    Thank you for your help.
    sis2b

    Thank you, I find how to solve the problem thanks to your link.
    I try to send HTML E-mail so I had the From in the from field writen in the header of the mail and not to initialize the connection.
    sis2b.

  • Why is the "From:" field being changed in Mac Mail.  I have multiple gmail accounts setup and it seems to change the "FROM" field even though I've selected which account to use to send the email.

    So
    I've got multiple gmail accounts setup in Mac Mail.
    Somtimes when I send or forward emails, it uses the wrong FROM field even though I'm declaring
    specifically which account to use.
    This becomes apparent when the person replies to my message and it goes to the wrong account

    Check you accounts in Mail and make sure each account has the correct outgoing server address. Check the box to use only that server.
    Second, go to the gmail website and in settings under the account tab, make sure you have the correct settings for replying to messages.

  • Receiver From Field of Send Step of Integration Process

    Could somebody please explain how this works? I cannot get receiver determination to work for a synchronous send of an Integration Process, and I think this is the problem.
    Documentation states the following:
    Calling a Receiver Determination Defined in the Integration Directory
           1.      In the Receiver From field of the properties area of the send step, select Send Context.
           2.      In the Send Context field, specify a character string for the send context.
    You can choose the character string yourself. You must specify the send context to be able to send messages from the same message interfaces to different receivers in different send steps.
           3.      Query the send context in a corresponding condition in the receiver determination in the Integration Directory.
    I just don't get this; if I choose the character string myself, how do I use it in step 3? I cannot see any way to query the send context in a condition. Is the Send Context the name of the receiver?
    If somebody can walk me through this step I would be very greatful!
    Kind Regards,
    Tony.

    Tony,
    An example
    Integration Repository
    I have a synchronous send step with the Send Context set to ABCDE
    Integration Directory
    In the Receiver Determination, Configured Receivers, enter the Condition Editor
    Select Left Operand and enter the Expression Editor
    Select the radio button for Context Object
    Use the dropdown to select ProcessStep
    Select OK
    Select Right Operand and enter your value, eg ABCDE
    Runtime
    When I run my scenario an entry can be seen in SXMB_MONI corresponding to my send step.  In my case it is displayed in the top Window
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
    - <Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV">
      <Trace level="2" type="T">......old attachment XI_Context found</Trace>
      <Trace level="3" type="T">Append context with name =ProcessStep and value =ABCDE</Trace>
    You can see here that the ProcessStep has the value ABCDE
    Hope this helps

  • Entourage Question: Enabling the "From" field for Send on Behalf emailing..

    You know like in Outlook 2003 Pro you can enable the "From" field and send an email as someone else (so long as you have permission to so that is)? How do you enable that same field in Entourage 2004?
    best regards,
    pheidippides

    Hi,
    Please make sure Domain1 is trusted by Domain2, then we can assign send as permission to Domain1 users for "DL System Admins" in Domain2.
    Thanks,
    Winnie Liang
    TechNet Community Support

  • Crazy thing: No dialtone from a SPA 3102 inside the same network.

    Hi folks: We have a couple of SPA-3102 connected to two POTS Bellsouth lines. Both 3102 are registering fine with our SIP server and also register the phone line.
    The crazy thing is this: If we try to get dialtone calling from an IP phone (SPA922) LOCATED IN THE SAME LOCAL NETWORK (I.E: In the office) to the 3102 number, we get no dialtone.
    If i try co call the same 3102 from a softphone (x-lite) also in the office, we still get no dialtone.
    But if i try to call the spa from other network than the office, (I.e: My home), i´m getting the dialtone!!!  I tried it with both the 922 IP Phone and the x-lite softphone and works fine.
    Also, we tried to call the 3102 from other IP phone in our office in Mexico, and also works fine.
    Our network topology in the office:  Motorola´s Netopia 3347-02 with Bellsouth xDSL internet service. Two Linksys EZXS16W swithes, and a mix of laptops, PCs, servers, IPPhones (SPA922 and 942) and printers connected to these switches
    Any idea ??
    Thanks in advance.
    Martin

    If the in-office X-Lite is accessing the SPA-3102 on its private IP, try the public IP, or vice-versa.
    I'm presuming that the SPA-3102 has a static private address, the Netopia is forwarding some UDP ports to the 3102, and that you are accessing the 3102 directly (not through a server such as Asterisk).  In this case, access from the LAN via the public IP may fail, because many routers don't handle 'hairpinning' correctly.  Access via the private IP may fail, because the client is being confused by the NAT mapping being applied by the 3102.  You can use Wireshark on the machine running X-Lite to see what's happening in each case.
    If your situation is other than the above, please provide the details:  Accessed via server?  If so, is server on LAN or outside?  What software?  Do you have administrative control over it?  Does your router have a SIP ALG?  Is it being used in this path?  What port forwarding or other special setup on router?  What NAT mapping parameters on SPA-3102?  What have you seen with Wireshark?  What remedial actions have you tried, with what results?  Do you have multiple static public IPs?  If so, is there a spare one?
    Message Edited by Stew on 05-05-2008 10:48 AM

  • Linksys SPA 3102 not detecting hang up from Asterisk FreePBX

    Hi,
    I am forwarding calls from my pstn to freepbx using SPA 3102 (pstn to voip gateway). I have programmed asterisk to disconnect the call. It seems asterisk is working fine and disconnecting but pstn user still hear the call ringing. How can i make the call disconnect?
    Thanks,
    Rajeev

    It's not be possible to solve issue described by rajeevraj22 in first message. According description, the incoming call has not picked up  ("pstn user still hear the call ringing"). Unfortunately, POTS signaling protocol doesn't allow to reject the incoming call. SPA3102 can either pick up call or ignore ring signal on POTS line. In the second case the calling user is hearing ring back tone until he hang up or call setup timeout occur.
    Despite your's (ildefonso_v1) problem seems not to be same (your call has been picked up first) there may not be solution available as well. CPC stands for "Calling party Control". CPC is signal sent from terminating PBX to called phone to indicate that the calling party has hung up. Terminating device (SPA3102 here) is recipient of CPC signal, not the source. E.g. CPC is related to opposite signaling direction that the one you are speaking about.
    The call disconnect from end device to PBX is signaled by high impedance of end device.
    I see when spa line is Idle the current Voltage is 52V, When a call is done the voltage is -7V. When I finish a incoming call from any internal extension or from asterisk the voltage is 52V again, but the call does not hang up in the other side.
    OK. So idle line voltage is 52V. According your description, the SPA3102 disconnect properly from line on end of call (voltage rise to 52V). If the call doesn't disconnect, then it's not matter of SPA3102 but matter of terminating PBX.
    The behavior like it is not so common in current phone networks, but older phone network switches allow no hangup from called side at all. Only caller is allowed to terminate the call.
    All at all, you can't solve the issue from your side of wire. If terminating PBX is not willing to disconnect call immediately, you can do nothing with it. Ask your Telco operator for support. The behavior of particular line may be configurable. But don't put so much hope on it.
    After 30 seconds I can see in the syslog POL REV -47 52 then the call hangs up in the other side.
    It is the CPC signal from PBX to you. The PBX considered the call is over and is signaling it to you.
    Rate helpful responses. It will help others to found solutions.

  • 'From' field when sending eMail...

    I'm using Mail, Version 2.1 (752/752.2).
    When I send an eMail... the FROM: field always shows my name, ie - From: My Name <[email protected]>
    How can I set it up to NOT display My Name?
    I would much rather have it say - From: Alias <[email protected]>
    Is there a way to do this?

    I have Gmail set up on my G5, at home, but not this iBook I am using from my daughter's house. Gmail does not lend itself to use from more that one computer and/or email client. However, I use it, primarily to test to help others.
    I think the Gmail SMTP is identifying you, and not the entry you place in Mail's preferences. When you send with the Gmail SMTP, your sent message is archived not only on your Mac's HD, but also on the Gmail server, for you to see using web access. This is different from more typical POP accounts. If you use the Cox SMTP (might require you to have at least set a POP account with them) as the Outgoing Server for the Gmail account, then I think what you place in the Mail Preferences Full Name entry will be included, and not your actual name.
    However, I will have to get home to test this. You probably will have a chance to test it, before I do.
    Ernie

  • Want same sender (From field) with different accounts

    I've got 3 different mail accounts.
    Now when i reply to a mail, Mail uses that email adress as sender that corresponds to that account.
    However, i would like to have the same sender email adress (the 'From:' field) with all of my email, no matter which account i received them through.
    [Thunderbird does that.]
    Is that possible?
    Best regards,
    Gabriel.

    Go to Mail's preferences -> Composing & change the popup choice for "Send new Mail from:" in the "Addressing:" section from "Account of last viewed mailbox" to the specific sender you want to use.
    Does that do what you want?
    Note: you can also change the sender on a message-by-message basis with the popup next to the "Account:" section in new or draft mail.
    This changes the actual account the messages are sent from. If you just want replies to go to that address, use the "Reply to" field in new or draft messages.

  • SPA 504 sends Notify Event: Conference without contact header

    Hi,
    I am using SPA 504G in which i have enabled Notify Conference. SPA registered with broadsoft.
    Now when i make conference by hitting conf softkey with one active call & one held call present, SPA 504G sends Notify with Event: Conference but without contact header. Broadsoft rensponce with "400 Contact issue".
    When SPA 504g registerd with Freeswitch it responce with "481 Subscription does not exists".
    pls suggest what should i do to make conference works in this scenerio?
    Thanks.

    Just for completeness - I tried to replay such scenario and I discovered that loop doesn't occur when the NOTIFY is rejected by "489 Bad event" response from PBX (it's more appropriate response for unknown events, of course, device should not flood network in any case). And/or "expires=0" in original NOTIFICATION may affect it.
    Dan
    <<<
    SIP/2.0 484 Address incomplete
    From: "6018" ;tag=8773d4554ea7044fo0
    To: ;tag=as13c4f5f8
    Call-ID: [email protected]
    CSeq: 102 INVITE
    Server: Asterisk PBX 1.8.20.1
    Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
    Supported: replaces, timer
    Reason: Q.850;cause=28
    >>>
    NOTIFY sip:A.B.250.1:5060 SIP/2.0
    From: "6018" ;tag=d0e0a73c447c60bco0
    To:
    Call-ID: [email protected]
    CSeq: 8816 NOTIFY
    Max-Forwards: 70
    Event: reserve-trunk;call-id=[email protected];expires=0
    User-Agent: Cisco/SPA112-1.3.1(003)
    Content-Length: 0
    <<<
    SIP/2.0 489 Bad event
    From: "6018" ;tag=d0e0a73c447c60bco0
    To: ;tag=as1965bbda
    Call-ID: [email protected]
    CSeq: 8816 NOTIFY
    Server: Asterisk PBX 1.8.20.1
    Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
    Supported: replaces, timer
    Content-Length: 0

  • Create line extension between two SPA-3102

    I`m having problems to create a line extension between two SPA-3102
    I have one SPA-3102 connected to an analog PBX system with IP 192.168.0.201, and the other SPA-3102 with analog phone and IP 192.168.0.200
    I succesfully setup them to make a call from the first to the second
    But I couldn`t setup them to make a call from the second (192.168.0.200) and give me the dialtone of the PBX connected to the first SPA-3102 (192.168.0.201).
    I could setup a hot line on the second SPA-3102 (192.168.0.200) and call to 192.168.0.201, but it doesn`t take the line to hear the pstn dialtone.
    I saw many answers about this problem, but no one resolve the problem, i have the latest firmware. please, anyone could help me and if it`s possible to work please send me all the configuration needed.
    Thanks again

    Hi Jeremy,
    I have a similar problem, I have one PSTN line (say Line1) with free minutes to mobiles, so its good for outgoing calls. The other line (say Line2) which i have is acually VoIP but it comes with its own hardware (magicJack if you have heard) so I can't use a SIP client and have to use the supplied Hw client, but it does give me an option to connect any normal phone to this magicJack (i suppose that would make it a fxs port). Now this magicJack is cheap for other people to call me.
    I want to find a solution so that all the calls I receive on Line2 get forwarded to my mobile number via Line1. And if I receive any calls on Line1 they should be treated normally (my home phone rings). Do you have some idea how I can achieve this with minimal spend? Thanx
    Atif

  • SIP phone and SPA 3102

    Hi,
    I don't have an ipPBX or call signaling server. Can I register a SIP phone on the remote SPA 3102 then call the remote number. SPA 3102 is on remote site, the FXO port is connected to a phone line. My SIP phone is on local site, connected to Internet.
    Thanks

    yytellmey wrote:
    Hi,
    Can I register a SIP phone on the remote SPA 3102 then call the remote number. SPA 3102 is on remote site, the FXO port is connected to a phone line. My SIP phone is on local site, connected to Internet.
    Yes you can do that. You need to know the ip address where you are calling. This is called direct ip dialing. You can call the SPA3102 and have the attached phone ring, or you can call the SPA3102 and have it dial a call out the pstn line. It all depends on what you want to do.
    Initially you can get it working with whatever ip address you have at the moment. For the long term, if you don't have a static ip address you can get a symbolic address from someone like dyndns.com and then when your ip address changes you setup some means, either thru your router that supports dynamic dns, or with a pc program to keep your ip address updated at dyndns for your symbolic address.
    You almost always have to forward the sip signalling port in your router to the SPA3102. You may also have to forward the spa's rtp ports in your router to the SPA3102.
    There are a couple of ways to configure the SPA3102 when you want to bridge the call out the pstn line. The simple way is to just return a dial tone to the caller and then the caller enters the pstn number they want to dial. A more complicated way is to send a sip invite to the SPA3102 and have the SPA dial the number. The latter method is more reliable because you don't have to send dtmf signals over your voip link.

  • SPA 3102- STUN SERVER NOT REACHABLE

    Hello,
    Following are Line 1 settings of an SPA-3102
    Nat mapping enabled=yes
    Nat keep alive enabled=yes
    Proxy server:correct proxy server specified
    Outbound proxy server: Correct outbound proxy server specified
    UserID and passwords are configured properly
    SIP TAB:
    RTP port min=16384
    RTP port max=16390
    Handle via received=yes
    Insert via received=yes
    Substitute via addr=yes
    STUN enable=yes
    STUN Server=aa.aa.com (correct STUN server configured)
    Hadle via rport=yes
    Inser via rport=yes
    Send resp to SRC port=yes
    STUN test enable=yes
    TURN server=not configured
    STUN test enable=yes
    EXT IP=not configured
    NAT keep alive INTVL=15
    Problem:
    On the REGISTER message I am receiving following warning
    Warning: 399 spa "STUN Server Not Reachable"
    User-Agent: Linksys/SPA3102-5.1.7(GW)
    Content-Length: 0
    Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER
    Supported: x-sipura, replaces
    Would you please explain why I receive STUN not reachable warning? It is a reachable STUN server. SPA 3102 devices are placed behind ADSL modems of ITSP

    I just noticed that you have Handle VIA received = yes, so if the proxy is responding with a 'received' tag, then the SPA would learn its external IP, without needing to contact the STUN server.  I have a system that is behind NAT but does not need STUN or symmetric RTP, because it uses the IP from the received tag in the SDP. (In my case, I have the RTP ports forwarded to the SPA, so no port number translations are needed.)

  • Receiving fax trought spa 3102 asterisk 1.4 and spa2102

    I have some problem receiving fax from a pstn line trought spa3102 - asterisk and spa 2102. I have updated the firmware of the latest version for spa3102 and 2102 and I have setting the port of spa 2102 were is attached the fax machine as described in the CISCO Small Business Administration guide (page nr. 55 - using a fax machine) but i cannot receive fax at speed upper to 2400 b.
    My setup is:
    pstn line -> spa3102 - asterisk 1.4.29 -> spa2102.
    The spa3102 is configured to pass all control to asterisk. When a call is answered and it is a fax, this call is transferd by operator to the internall extension of spa2102 where is attached the fax machine.
    I don't know as configure the pstn port of spa3102 for fax receiving.
    Can you help me ?
    thank in adavnce.
    e.

    Thank you for your reply.
    Ok, I report my solution because I think that can be userfull for other users.
    I have resolved the problem in this manner:
    1) on the SPA 3102 I have set the PSTN Line, audio section:
    a) preferred codec G711u;
    b) use pref. codec: YES;
    c) silence supp. enable: NO;
    d) echo canc enable: YES;
    e) echo canc. adapt enable: YES;
    f) echo sup enable: NO;
    g) FAX CED Detect Enable: YES;
    h) FAX CNG Detect Enable: YES;
    i) FAX Passthru Codec: G711u;
    j) FAX Codec Symmetric: YES;
    k) FAX Passthru Method: reinvite;
    l) FAX Process NSE: YES;
    m) FAX Disable ECAN: no
    2) on the SPA 2102 on the line were is  attached the fax machine, audio section:
    I have followed the setup as described in the document that I have mentioned in my first message that is:
    a) Preferred Codec: G711u;
    b) Use Pref Codec Only: YES 
    c) Silence Supp Enable: NO
    d) Echo Canc Enable: NO
    e) Echo Canc Adapt Enable: NO
    f) Echo Supp Enable: NO
    g) FAX CED Detect Enable:YES
    h) FAX CNG Detect Enable: YES
    i) FAX Passthru Codec: G711u
    j) FAX Codec Symmetric: YES
    k) FAX Passthru Method: reinvite
    l) FAX Process NSE: YES
    m) FAX Disable ECAN: NO
    n) FAX Enable T38: NO
    o) FAX Tone Detect Mode: caller or callee
    With this configuration I can receive and send fax to 14.400 on PSTN line acros the asterisk and the SPA 3102 / 2102 device.
    The phone attached on the line 1 port of the spa 3102 have not echo when answer or call on the PSTN line as the other phone that have access to PSTN Line.
    The phone of the fax macchine have echo, but usualy is not used as phone.
    E.

Maybe you are looking for

  • Embedding Video Files in PowerPoint

    I'm having an issue with playing avi files within a PowerPoint presentation on a PC. I saved the files as .avi files, put them in a file folder, zipped it and sent it to my server. When my friend pulls it down, she can't see the videos in the present

  • Problem(?) with BAPI BAPI_PRODORDCONF_CREATE_TE

    Hi everybody! I want to use the BAPI BAPI_PRODORDCONF_CREATE_TE to create confirmations for productionorders! I only use the recordtypes 'B10' and 'B40'. The problem is, that the  BAPI only creates partial confirmations, and no final confirmations. F

  • Retrieving content from Apple TV

    Pretty sure I know the answer as others have posted similar questions but here goes: I bought a used Apple TV. The guy I bought it from does not have copies of any of the content (both iTunes purchased and non purchased (ripped etc.)) currently on th

  • Oracle.DataAccess.Client not found[SOLVED]

    Hello, I am trying to run a stored procedure using C# and I need to use the Oracle.DataAccess.Client but when i enter "using Oracle.DataAccess.Client;" visual studio throws the error: Error 1 The type or namespace name 'Oracle' could not be found (ar

  • Two-dimensional array

    heLLo,,!! cAn u pLease givE mE thE codE of this oUtpUt usina two-dimensional array? thAnks a lot,,, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@