Assigning parameters to custom page types

I am creating a custom portlet that displays a banner at the top of a page. The banner that the portlet displays is dependant on the value of a parameter being passed into it. So for example if I set the parameter to equal 'finance' it would display a banner specific to the finace department e.t.c. The idea of this approach is that we only have to create one template (rather than one for every department).
I do not want users who create pages to have to go into every page they create and manually set the parameter values for their specific department. (within page properties > parameters). Instead I wish to create some custom page types that have pre-defined parameters set against them. My question is - Is it possible to assign parameters to custom page types (preferably as a hidden field so users cant accidently change it) and if so how? If not does anyone know a better way of doing it?

You can't do this with parameters, but you can do it with custom page type attributes. Set default values for the attributes and have the portlet query the WWSBR_FOLDER_ATTRIBUTES view to get the values (or you could just check the page type in WWSBR_ALL_FOLDERS and not use an attribute at all).
To get the pageid that you'll need for the query, use the function WWCTX_API_PARAMETERS.GET_VALUE('_pageid',p_reference_path).
Regards,
Jerry
PortalPM

Similar Messages

  • Custom Page Type

    Is there a way of hiding the Category and Keyword base attributes on a custom page as there is when creating a Custom Item Type?
    Is it possible to create a page template from a custom page? I just get "Error while copying page. (WWC-44262)
    (WWC-00000)" when trying this on Portal 9.0.2.3.
    I can create custom pages using wwsbr_api.add_folder but I don't think there is a way to associate a UITemplate with the resultant pages by amending one of the parameters. Can I use the information held in WWTMP_ALL_TEMPLATES to update whatever table associates the UItemplate with the folders/pages - if so which table is it? (I have now attached a template itself linked to a UITemplate to the page group but when you attach a template you lose the right to amend the page areas).

    Kendra,
    Sorry for the late reply but the forums were down yesterday.
    It is not a good practice to update the Portal tables directly. In this case, if the custom page type is identical to a standard page then the manual update should work. That means the custom page type should have no custom attributes or procedures. The custom attributes and procedures can be added to the page type later.
    There are other ways to solve this problem. You can use page parameters to accomplish the same thing - just define the page parameter, set a default value, and make the parameter non-customizable. If you have a group of pages that have the same attributes, you can define the parameters in the page template and all the pages will inherit the values. Using page parameters is no more work than updating attributes in a custom page type, and it is easier for portlets to get access to the parameter values than to look up page attributes.
    You can also use the function WWPRO_API_PARAMETERS.GET_VALUE('_pageid',p_reference_path) in a PL/SQL portlet to get the value of the portal pageid. You can then query a custom table that cross-references the page id's with the display attributes that you would like the page to use. If you are using Java portlets there are other techniques for parsing the page URL (in the PDK or even generic JDK functions) to get the pageid.
    Finally, we will continue to support custom page types. However, for this requirement I would recommend using page parameters instead (you may have other needs for custom page types, however).
    Regards,
    Jerry
    PortalPM

  • Can not create template based page with customized page type.

    I built a customized page type (with persepective attribute) and wanted to build pages with this type. If the new pages do not based on any template, it works fine. However, if I wanted to use a template, the page type was set back to "standard"!
    Steps to reproduce it:
    1. create a new page type - test page type.
    2. create a new template = test template.
    3. create a new page - test page.
    3.1 choose the page type to be "test page type"
    3.2 fill in the form including the new attribute info.
    3.2 choose the page template to be 'test template"
    3.3 click finish
    4. click the properties of "test page", it shows that the page type is "standard" and the new attribute information is gone!
    If in step 3.2, no template is chosen, the properties of the new page shows the page type is "test page type".
    I tried to find a workaround.
    1. create a page with "test page type".
    2. covert the new page to template.
    I got this error message:
    Error while copying page. (WWC-44262)
    (WWC-00000)
    Looks like customized page type and template can not coexist. Is this a bug?

    How long should the upgrade take? And should it be attempted on a production (infrastructure on machine 1/middle-tier on machine 2) Windows 2000 architecture? Or should be wait for 9.0.4? Or ... should I ask this in a TAR? Thanks!
    Mike

  • Can not build a template based page with customized page type.

    I built a customized page type (with persepective attribute) and wanted to build pages with this type. If the new pages do not based on any template, it works fine. However, if I wanted to use a template, the page type was set back to "standard"!
    Steps to reproduce it:
    1. create a new page type - test page type.
    2. create a new template = test template.
    3. create a new page - test page.
    3.1 choose the page type to be "test page type"
    3.2 fill in the form including the new attribute info.
    3.2 choose the page template to be 'test template"
    3.3 click finish
    4. click the properties of "test page", it shows that the page type is "standard" and the new attribute information is gone!
    If in step 3.2, no template is chosen, the properties of the new page shows the page type is "test page type".
    I tried to find a workaround.
    1. create a page with "test page type".
    2. covert the new page to template.
    I got this error message:
    Error while copying page. (WWC-44262)
    (WWC-00000)
    Looks like customized page type and template can not coexist. Is this a bug?

    How long should the upgrade take? And should it be attempted on a production (infrastructure on machine 1/middle-tier on machine 2) Windows 2000 architecture? Or should be wait for 9.0.4? Or ... should I ask this in a TAR? Thanks!
    Mike

  • Help needed in passing parameters between custom pages

    Hi,
    Thanks in advance for your help gurus. I am developing 2 new pages and both should have link between them. WHen I click a button on page A it will navigate to page B, I am passing 2 parameters to page B. Page B is rendered with the help of values passed. Page B has 2 OAMessageLovInput Bean for which I am setting their values based on the values passed using
    OAMessageTextInputBean custBean = (OAMessageTextInputBean)webBean.findIndexedChildRecursive("CustID");
    custBean.setText(pageContext.getParameter("customerid"));
    Everything works great till now. Now I want to change the customer id on page B using the LOV ie I select a new customer and I tab out of the field, still the customer id is not changed, it is set to the old one only to which the bean is set to.
    What should I do get the new selected customer id to be populated on the LOV fields.
    Thanks,
    newbie

    newbie,
    You really do not need to explicitly set the customer Id through code. Just create a new LOV Mapping and make its return value to the MessageTextInputBean i.e CustID on base page and Lov Region Item would be the CustomerID of the Lov Table region.
    Create Custome ID in LOV Table region and set its render property to false. I am assuming that the custId is present in the LOV VO query.
    Thanks
    --Anil                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Required field in custom content type not required in custom list instance

    I have an issue with a custom SharePoint 2013 solution. Among other components, it consists of:
    a feature with several custom fields with different types, some of which are taxonomy fields,
    a feature with three custom content types using different sets of the custom fields with partially different configuration, e.g. whether they are required or not,
    a feature with a custom document library template and instance using two of the custom content types and a default picture library that is programmatically customized when the feature is activated, e.g. it is assigned the third custom content type.
    When deploying the solution and activating the feature, everything is set up correctly except a single taxonomy field for one of the doc lib's content types. It is defined to be required in both content types but indeed it does not show up as required for
    the default content type whereas everything works fine for the other. And it does not matter which of the two custom content types is defined first (= default) in the list template's schema.xml, the issue always occurs for the same taxonomy field in the doc
    lib's default content type. When I use the built-in Document content type as default, the field is required for both custom content types. However, using the Document content type is not an option.
    If you think this behavior is not strange enough: When the list content type's field is set required through the SharePoint UI, it becomes optional again when the list column is updated, e.g. its display name is changed.
    Any ideas?

    Hi,
    Thank you for your question.
    We are currently looking into this issue and will give you an update as soon as possible.
    Thank you for your understanding and support.
    Linda Li                
    Forum Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact
    [email protected]
    Linda Li
    TechNet Community Support

  • Creating a Custom Page

    Is there a way in apex is there way when you create a page you can add a custom page type.
    David

    David,
    You mean you want to specify the type that is displayed on the application home page? If so, no. We calculate that type based upon a formula of sorts that looks at the types of regions you have on a given page.
    -- Sharon

  • How to use custom aspx page as template for custom content type

    Hi,
    I have created custom content type and custom aspx page. I want to use aspx page as template for custom content type.
    Can anybody please let me know how to accomplish this?
    Any help would be appreciated.
    Thank you,
    AA.

    Check if you are looking for the below
    http://www.sharepointpals.com/post/How-to-Create-a-Page-Layout-(PageLayout)-with-ContentType-in-SharePoint-2013
    Please remember to click 'Mark as Answer' on the answer if it helps you

  • Custom page with internal id as parameters: convert to names

    Hi,
    I am new to OAFramework... just so that you know.
    I have a custom page, called from a link on a notiification, which has a number of parameers coming in. These parameters are internal ids. Do I use validation view object to translate those id's into names and numbers? Or is that usually done via a different technique?
    thanks
    Ronny

    Ok, here is what I did.
    I have a number of internal id's coming in as parameter.
    Created 2 VVO's.
    - InvoiceDataVVO
    - personDataVVO
    Actually I created 3 VVO's, because I thought I would be able to use a VVO a second time for another translation but that seemed to be wrong thinking.
    So, third VVO (which is identical to personDataVVO)
    - ccPersonDataVVO
    Connected them to the AM (NotifySupplierAM).
    Created the initQuery method in the corresponding VVOImpl classes
    public void initQuery(String PersonId)
    setWhereClauseParams(null); // Always reset
    setWhereClauseParam(0, PersonId);
    executeQuery();
    In the controller NotifySupplierCO I added the following in the processRequest
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    initMailData(pageContext, webBean);
    code for initMailData
    * Display the proper mailing info on the page
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void initMailData(OAPageContext pageContext, OAWebBean webBean)
    Enumeration num = pageContext.getParameterNames();
    Hashtable hm = new Hashtable();
    while (num.hasMoreElements()) {
    String element = num.nextElement().toString();
    hm.put(element, pageContext.getParameter(element) );
    String InvoiceId = hm.get("invoiceId").toString();
    String VendorId = hm.get("vendorId").toString();
    String AccountantUserId = hm.get("accountantUserId").toString();
    String SenderUserId = hm.get("senderUserId").toString();
    String RespId = hm.get("respId").toString();
    String RespApplId = hm.get("respApplId").toString();
    String OrgId = hm.get("orgId").toString();
    System.out.println("InvoiceId : " + InvoiceId);
    System.out.println("VendorId : " + VendorId);
    System.out.println("AccountUserId : " + AccountantUserId);
    System.out.println("SenderUserId : " + SenderUserId);
    System.out.println("RespId : " + RespId);
    System.out.println("RespApplId : " + RespApplId);
    System.out.println("OrgId : " + OrgId);
    // Translate the parameter values into names and stuff
    OAApplicationModule am = pageContext.getApplicationModule(webBean);
    Serializable[] parameters = { InvoiceId, AccountantUserId, SenderUserId  };
    am.invokeMethod("queryMailDataById", parameters);
    // Put the values to the page fields (for the items which are not mapped
    // to a VVO
    OAMessageTextInputBean itemMailBodyTextBean = (OAMessageTextInputBean)webBean.findChildRecursive("MailBodyText");
    OAMessageCheckBoxBean itemIncludeAttachmentBean = (OAMessageCheckBoxBean)webBean.findChildRecursive("IncludeAttachment");
    itemMailBodyTextBean.setValue(pageContext,null);
    itemIncludeAttachmentBean.setValue(pageContext, 'Y');
    } // initMailData
    This calls queryMailDataById in the AM, which looks like this.
    * Translate the incoming id values into the nessecary data values
    * to be displayed on the page
    * @param pageContext the current OA page context
    * @param webBean the web bean corresponding to the region
    public void queryMailDataById( String InvoiceId
    , String AccountantId
    , String SenderId
    InvoiceDataVVOImpl voInv = getInvoiceDataVVO1();
    voInv.initQuery(InvoiceId);
    personDataVVOImpl voSend = getpersonDataVVO1();
    voSend.initQuery(SenderId);
    ccPersonDataVVOImpl voAccount = getccPersonDataVVO1();
    voAccount.initQuery(AccountantId);
    The input fields on the page are mapped to the VVO's.
    example:
    View Instance: InvoiceDataVVO1
    View Attribute: VendorEmail
    That did the trick.
    regards
    Ronny
    Edited by: Ronny Eelen on 11-Jul-2011 01:12

  • Error message while checking in Publishing page with custom content type.

    Hi,
    We have a custom page layout created from a custom content type. We have dragged some "Mandatory fields" on to the page.
    Even if i add all the fields on the page and click on check in, we are still getting the below error :
    "You must fill out all required properties before checking in this document."
    Regards,
    Amit

    Hi,
    We have a custom page layout created from a custom content type. We have dragged some "Mandatory fields" on to the page.
    Even if i add all the fields on the page and click on check in, we are still getting the below error :
    "You must fill out all required properties before checking in this document."
    Regards,
    Amit

  • Custom page layouts for iPhoto books- bleeds and type

    I've been digging through the forum for info on creating custom page layouts. I have the basics: print PDF (to capture the page BG and graphics elements), manipulate in PhotoShop and place the custom page as a full page photo.
    How does iPhoto deal with bleeds? Since I'm trying to recreate the style of the other pages I'd like it to match.
    Is all type in an iPhoto book rasterized? The printed PDF retains type. Will rasterized type in PS layouts match "native" text in iPhoto?
    I haven't purchased a book yet and I'm wondering if the book is sent to Apple as a PDF with vector data. If that's the case can custom pages be inserted into the PDF with vector type intact?
    Thanks all!
    rg

    gatz:
    Welcome to the Apple Discussions. I don't know much about bleeds but you can manipulate it in the iPhoto preference file with Pref Setter.
    Regarding the rasterized type, you'll have to give it a try and then create a pdf of the book to check it out. In iPHoto 5 we used to be able to get a copy of the pdf file that was uploaded to Apple but in V6 that's not possible. I think the pdf file may be the same as we get when creating it via Print to PDF. Here's the info I received from Apple about book quality and materials:
    I contacted Apple and asked for information that I could pass on. Here's the reply I received from Apple:
    "Thank you for contacting the Apple Print Products Customer Service.
    I understand that you would like to know the printing process that is used and the color mode the files should be in, so you can better advise users in the iPhoto forum.
    iPhoto version 4 or later, allows you to import and print files through the Apple Print Product service as RGB, grayscale, or CMYK color space. JPEG files with RGB color space are recommended for best results.
    While iPhoto 2 can import files of various formats, including RGB color, grayscale, and CMYK, this version requires JPEG files with RGB color space when printing photos and books.
    For more information regarding iPhoto 2, please visit the following article:
    iPhoto: Color, Black and White Prints Appear Garbled or Distorted
    For more information regarding iPhoto 5, please visit the following article:
    http://docs.info.apple.com/article.html?artnum=165501
    Here are some of the technical specifications for the books, cards, and calendars. I hope this gives you an idea about their quality and form.
    BOOKS
    All iPhoto books are printed using acid-free paper for long-lasting image quality. The photos are printed at a high resolution (300DPI if you use iPhoto 6). There is no external modification--such as sharpening or contrast adjustment--of the photos; what you see in the application is what is printed in the book.
    Hardcovers Books
    The cover is hard-bound and covered in linen. You select the linen color during the book-ordering process. The hardcover books have a solid, stiff binding that is glued and crimped. The internal pages, measuring 8.5 x 11 inches, are printed on McCoy 100# Text Gloss paper stock.
    Softcover Books
    The softcover books come in three sizes:
    - Large 8.5 x 11 inches
    - Medium 6 x 8 inches
    - Small 2.6 x 3.5 inches
    All of the softcover books have internal pages that are printed on McCoy 100# Text Gloss paper stock. The large softcover book has a white cover (Kromekoteplus Folding Cover, 16 point) with a cutout on the front that reveals the cover-page photo in the book. The covers for the medium and small softcover books have the cover image and title printed directly on the cover. All of the softcover books have a glued binding and feature a thick cover of McCoy 100# Cover Gloss paper stock.
    CARDS
    All cards are printed on McCoy 120# Silk Cover paper stock. The postcards measure 4 x 6 inches, and the greeting cards measure 5 x 7inches.
    CALENDARS
    All calendars measure 8 x 10 inches and are printed on McCoy 100# Silk Cover paper stock.
    To ensure the best print quality, we have chosen to use Kodak NexPress technology. The press uses a dry toner, which is fused to the surface of the paper. Please see NexPress' site for more information:
    KODAK NEXPRESS 2500 Digital Production Color Press
    I hope you find this information helpful in answering questions on the iPhoto forum."
    Do you Twango?
    TIP: For insurance against the iPhoto database corruption that many users have experienced I recommend making a backup copy of the Library6.iPhoto database file and keep it current. If problems crop up where iPhoto suddenly can't see any photos or thinks there are no photos in the library, replacing the working Library6.iPhoto file with the backup will often get the library back. By keeping it current I mean backup after each import and/or any serious editing or work on books, slideshows, calendars, cards, etc. That insures that if a problem pops up and you do need to replace the database file, you'll retain all those efforts. It doesn't take long to make the backup and it's good insurance.
    I've written an Automator workflow application (requires Tiger), iPhoto dB File Backup, that will copy the selected Library6.iPhoto file from your iPhoto Library folder to the Pictures folder, replacing any previous version of it. You can download it at Toad's Cellar. Be sure to read the Read Me pdf file.

  • SAP BPC Custom Process Type - passing parameters

    Hi,
    I wish to create a custom process type with custom parameters which can be populated from the Data Manager package execution. I went thru the tutorial by Rich mentioned [here|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b0427318-5ffb-2b10-9cac-96ec44c73c11]. But because of access issues, I cannot install the classes on my system using the .BPC files.
    Can someone please guide me as to how I can use custom parameters in my process type? So far, I have tried adding the parameter but haven't been successful:
    1) Created a class ZCL_UJD_BPC_TEST (with superclass CL_UJD_ACTOR) and populated all the methods for this class.
    2) Created a class ZCL_UJD_TEST and created a constructor and PROCESS method. Here I tried to read the parameter XXXXXX.
    3) Added the ZBPCTEST process type in RSPC
    4) Created a custom process chain with a custom variant /CPMB/ZYYYYYY for the ZBPCTEST process type.
    5) Created the DM package and passed value to the parameter XXXXXX using dynamic script.
    However, I get the error "Cannot configure the parameter XXXXX in task YYYYYYYY".
    Thanks,
    Shailesh Kamath.

    Hi Shailesh,
    Did u solve this, we also implemented same in BPC 7.5 NW but after migration many methods become obselete,please let me know how you approached.
    Regards
    Ram

  • Document Set custom content type - welcome page missing

    Sharepoint 2013. 404 error on welcome page for a following content type based on document
    set:
    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Field ID="{B9B7D98D-A2D3-4191-9B30-C516C8EDD9F4}" DisplayName="Fieldpr41" Name="Fieldpr41" Type="Note" RichText="false" NumLines="3" Group="pr41" Overwrite="TRUE" />
    <!-- Parent ContentType: Document Set (0x0120D520) -->
    <ContentType ID="0x0120D5200062FEFD4873814585B3EFD57010F1F8AE"
    Name="ContentType41"
    Group="Custom Content Types"
    Description="My Content Type"
    Inherits="FALSE"
    ProgId="SharePoint.DocumentSet"
    Version="0">
    <FieldRefs>
    <FieldRef ID="{B9B7D98D-A2D3-4191-9B30-C516C8EDD9F4}" DisplayName="Fieldpr41" Name="Fieldpr41" />
    </FieldRefs>
    <XmlDocuments>
    <XmlDocument
    NamespaceURI=
    "http://schemas.microsoft.com/office/documentsets/welcomepagefields">
    <wpFields:WelcomePageFields
    xmlns:wpFields=
    "http://schemas.microsoft.com/office/documentsets/welcomepagefields"
    LastModified="1/1/2010 08:00:00 AM">
    <WelcomePageField id="83729202-DCA7-4BF8-A75B-56DDDE53189C" />
    </wpFields:WelcomePageFields>
    </XmlDocument>
    </XmlDocuments>
    </ContentType>
    </Elements>
    Here's
    what i did after changing Inherits parameter to FALSE: 1) added ProgId parameter 2) added wpFields section 
    Any ideas?

    Hi,
    According to your post, my understanding is that you got an error while creating custom document set content type.
    The issue is that you set the Inherits=”FALSE” in the element. If you set the Inherits=”TRUE”, the content type would work.
    Based on the article form MSDN:
    If Inherits is TRUE, the child content type inherits all fields that are in the parent, including fields that users have added.
    If Inherits is FALSE or absent and the parent content type is a built-in type, the child content type inherits only the fields that were in the parent content type when SharePoint Foundation was installed.
    The child content type does not have any fields that users have added to the parent content type.
    If Inherits is FALSE or absent and the parent content type was provisioned by a sandboxed solution, the child does not inherit any fields from the parent.
    It means if you set the Inherits to true, we would lose all our customization there.
    If we set Inherits="FALSE", which means you then have to remember to explicitly add into the definition all the stuff you should be inheriting, like the default Doc Set event receivers. 
    More reference:
    http://morefunthanapokeintheeye.blogspot.com/2012/10/how-to-successfully-provision-and.html
    http://ybbest.wordpress.com/2012/07/04/how-to-deploy-document-set-using-caml-in-sharepoint2010-solution-package/
    Thanks & Regards,
    Jason
    Jason Guo
    TechNet Community Support

  • Assigning filter criteria for custom message type.

    Hi everyone,
    In our requirement i have created a custom message type ZDEBMAS like debmas. now while creating a distribution model with this message type, i need to create a filter for this.
    only IDOCs of customers with Account group 0001, 0002 and 0012 has to be triggered. I'm able to create the filter with message type DEBMAS, but while i'm using message type ZDEBMAS i'm unable to create any filter. Can any help me in this.
    thanks in advance,
    Rajni

    Hi!
    Do you create filter with BD95 and  allocation with BD59 transactions?

  • Customs document type cannot be determined for external document Type F8

    Hello Experts
    Need help
    I am trying to transfer F8 to GTS 10.1 and getting following message in GTS  Transfer log for export:
    Customs document type cannot be determined for external document Type F8
    New implementation
    GTS 10.1 running with SP 12
    ECC side Plug-In settings are fine. BAdi is Active.(There is no document mapping for F8/CUSDEC as it is not required in 10.1)
    GTS side configurations are also fine. Checked several times by 4 sets of eyes!!
    (Include general settings configurations, Customs communication configurations:)
    (Defining technical medium, conditions/output parameters, defining messages for communication process,
    defining determination for activity sequence and control settings for communication process)
    Despite this I am not able to trnasfer F8 successfully
    Can someone throw some light on this issue please?
    Keshav Murthy
    [email protected]

    Hi Dhilipan
    Here we go..
    You asked me to check the following
    Please check following things
    1) Legal regulation is activated. - Yes Activated
    2) Process template assigned to the legal regulation - Yes Assigned
    3) Activity Sequence determination - Yes done
    4) Open the activity sequence in under Control settings for Communication processes and check if there is a document type assigned to it. Table- /SAPSLL/TLEPAF - Yes done.
    It is really puzzling.
    Thanks
    Keshav Murthy

Maybe you are looking for

  • K7T Turbo R Limited Edition and crackleing sound

    I started getting a crackling sound recently. I never had that problem before. The only thing I can think of that I have done that may have started it was to update the bios and the via chipset drivers. I tried to reinstall the 442 drivers (only the

  • Using writetext function in a stored procedure for Sybase 11.5

    Hello, I need to execute the writetext function inside a Sybase stored procedure to insert varchar data of approximately 4k size. how to specify data parameter in writetext fot that?

  • What hardware and software is needed to use share point 2010

    Please if enyone could help! I want to become familiar with the advantages of using excel for example simultaneusly with other users, shere point does it best for us yes???  What do I need to install or what hardware is needed to do that? Thanks,

  • SAP Netweaver 7.1 Product License

    Hi, I need complete license information for SAP Netweaver 7.1 product from where I can get it. Actually, I need to know if an organization purchase full licensed product of SAP Netweaver 7.1 then they can use the same to develop and distribute their

  • Why does FF4 think my version of Flash is old?

    I have the latest 64 bit version but FF4 rejects it. How can I tell what FF4 is looking at and checking? I also have the latest 32 bit version installed. The more I look at FF4, the more I want to go back to 3.6.15 - not 16 either.