Excel VLOOKUP tutorial for beginners with formula examples

Today we'll look at how to use VLOOKUP in Excel with many detailed step-by-step examples. You'll learn how to Vlookup from another sheet and different workbook, search with wildcards, and a lot more.

This article begins a series covering VLOOKUP, one of the most useful Excel functions and at the same time one of the most intricate and least understood. We will try to explain the basics in a very plain language to make the learning curve for an inexperienced user as easy as possible. We will also provide formula examples that cover the most typical usages of VLOOKUP in Excel, and try to make them both informative and fun.

Excel VLOOKUP function

What is VLOOKUP? To begin with, it is an Excel function :) What does it do? It searches for the value you specify and returns a matching value from another column. More technically, the VLOOKUP function looks up a value in the first column of a given range and returns a value in the same row from another column.

In its common usage, Excel VLOOKUP searches through your data set based on the unique identifier and brings you a piece of information associated with that unique identifier.

The letter "V" stands for "vertical" and is used to differentiate VLOOKUP from the HLOOKUP function that looks up a value in a row rather than column (H stands for "horizontal").

The function is available in all versions of Excel 365 through Excel 2007.

Tip. In Excel 365 and Excel 2021, you can use the XLOOKUP function, which is a more flexible and powerful successor of VLOOKUP.

VLOOKUP syntax

The syntax for the VLOOKUP function is as follows:

VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

Where:

  • Lookup_value (required) - is the value to search for.
    This can be a value (number, date or text), cell reference (reference to a cell containing a lookup value), or the value returned by some other function. Unlike numbers and cell references, text values should always be in enclosed in "double quotes".
  • Table_array (required) - is the range of cells where to search for the lookup value and from which to retrieve a match. The VLOOKUP function always searches in the first column of the table array, which may contain various text values, numbers, dates, and logical values.
  • Col_index_num (required) - is the number of the column from which to return a value. The counting starts from the leftmost column in the table array, which is 1.
  • Range_lookup (optional) - determines whether to search for approximate or exact match:
    • TRUE or omitted (default) - approximate match. If an exact match is not found, the formula searches for the largest value that is smaller than the lookup value. Requires sorting the lookup column in ascending order.
    • FALSE - exact match. The formula searches for a value exactly equal to the lookup value. If an exact match is not found, a #N/A value is returned.
Excel VLOOKUP function

Basic VLOOKUP formula

Here is an example of the Excel VLOOKUP formula in its simplest form. Please have a look at the below formula and try to "translate" it into English:

=VLOOKUP("lion", A2:B11, 2, FALSE)

  • The 1st argument (lookup_value) clearly indicates that the formula looks up the word "lion".
  • The 2nd argument (table_array) is A2:B11. Keeping in mind that the search is performed in the left-most column, you can read the above formula a little further: search for "lion" in the range A2:A11. So far, so good, right?
  • The 3rd argument col_index_num is 2. Meaning, we want to return a matching value from column B, which is second in the table array.
  • The 4th argument range_lookup is FALSE, which indicates that we are looking for exact match.

With all the arguments established, you should have no problem reading the whole formula: search for "lion" in A2:A11, find an exact match, and return a value from column B in the same row.

For the sake of convenience, you can type the value of interest in some cell, say E1, replace the "hardcoded" text with the cell reference, and get the formula to look up any value you input in E1:

=VLOOKUP(E1, A2:B11, 2, FALSE)

Does anything remain unclear? Then try looking at it this way:
Excel VLOOKUP formula for exact match.

How to do a Vlookup in Excel

When using VLOOKUP formulas in real-life worksheets, the main rule of thumb is this: lock table array with absolute cell references (like $A$2:$C$11) to prevent it from changing when copying a formula to other cells.

The lookup value in most cases should be a relative reference (like E2) or you can lock only the column coordinate ($E2). When the formula gets copied down the column, the reference will adjust automatically for each row.

To see how it works in practice, please consider the following example. To our sample table, we have added one more column that ranks the animals by speed (column A) and want to find the 1st, 5th and 10th fastest sprinter in the world. For this, enter the lookup ranks in some cells (E2:E4 in the screenshot below), and use the following formulas:

To pull the animal names from column B:

=VLOOKUP($E2, $A$2:$C$11, 2, FALSE)

To extract speed from column C:

=VLOOKUP($E2, $A$2:$C$11, 3, FALSE)

Enter the above formulas in cells F2 and G2, select those cells, and drag the formulas to the below rows:
Using VLOOKUP in Excel.

If you investigate the formula in a lower row, you will notice that the lookup value reference has adjusted for that specific row, while the table array is unchanged:
Lock the table array with absolute references.

Below, you will have a few more useful tips that will save you a lot of headache and troubleshooting time.

Excel VLOOKUP - 5 things to remember!

  1. The VLOOKUP function cannot look at its left. It always searches in the leftmost column of the table array and returns a value from a column to the right. If you need to pull values from left, use the INDEX MATCH (or INDEX XMATCH in Excel 365) combination that can does not care about the positioning of the lookup and return columns.
  2. The VLOOKUP function is case-insensitive, meaning that uppercase and lowercase characters are treated as equivalent. To distinguish the letter case, use case sensitive VLOOKUP formulas.
  3. Remember about the importance of the last parameter. Use TRUE for approximate match and FALSE for exact match. For full details, please see VLOOKUP TRUE vs. FALSE.
  4. When searching for approximate match, make sure the data in the lookup column is sorted in ascending order.
  5. If the lookup value is not found, a #N/A error is returned. For information about other errors, please see Why Excel VLOOKUP is not working.

Excel VLOOKUP examples

I hope vertical lookup is starting to look a bit more familiar to you. To strengthen your knowledge, let's build a few more VLOOKUP formulas.

How to Vlookup from another sheet in Excel

In practice, the Excel VLOOKUP function is rarely used with data in the same worksheet. Most often you will have to pull matching data from a different worksheet.

To Vlookup from a different Excel sheet, put the worksheet's name followed by an exclamation mark in the table_array argument before the range reference. For example, to search in the range A2:B10 on Sheet2, use this formula:

=VLOOKUP("Product1", Sheet2!A2:B10, 2)

Of course, you don't have to type the sheet's name manually. Simply, start typing the formula and when it comes to the table_array argument, switch to the lookup worksheet and select the range using the mouse.

For instance, this is how you can look up the A2 value in the range A2:A9 on the Prices worksheet and return a matching value from column C:

=VLOOKUP(A2, Prices!$A$2:$C$9, 3, FALSE)
A formula to Vlookup from another worksheet.

Notes:

  • If the spreadsheet name contains spaces or non-alphabetical characters, it must be enclosed in single quotation marks, e.g. 'Price list'!$A$2:$C$9.
  • In case you use a VLOOKUP formula for multiple cells, remember to lock table_array with the $ sign, like $A$2:$C$9.

How to Vlookup from another workbook in Excel

To Vlookup from a different Excel workbook, put the workbook's name enclosed in square brackets before the worksheet's name.

For example, here's the formula to look up the A2 value on the sheet named Prices in the Price_List.xlsx workbook:

=VLOOKUP(A2, [Price_List.xlsx]Prices!$A$2:$C$9, 3, FALSE)

If either a workbook name or worksheet name contains spaces or non-alphabetical characters, you should enclose them in single quotes like this:

=VLOOKUP(A2, '[Price List.xlsx]Prices'!$A$2:$C$9, 3, FALSE)

The easiest way to make a VLOOKUP formula that refers to a different workbook is this:

  1. Open both files.
  2. Start typing your formula, switch to the other workbook, and select the table array using the mouse.
  3. Enter the remaining arguments and press the Enter key to complete your formula.

The result will look somewhat like the screenshot below:
VLOOKUP from another workbook.

Once you close the file with your lookup table, the VLOOKUP formula will continue working, but it will now display the full path for the closed workbook:
Formula to Vlookup from a closed workbook.

For more information, please see How to refer to another Excel sheet or workbook.

How to Vlookup from a named range in another sheet

In case you plan to use the same lookup range in many formulas, you can create a named range for it and type the name directly in the table_array argument.

To create a named range, simply select the cells and type the name you want in the Name box to the left of the Formula bar. For the detailed steps, please see How to name a range in Excel.

For this example, we gave the name Prices_2020 to the data cells (A2:C9) in the lookup sheet and get this compact formula:

=VLOOKUP(A2, Prices_2020, 3, FALSE)
Vlookup from a named range in another sheet.

Most names in Excel apply to the entire workbook, so you don't need to specify the worksheet's name when using named ranges.

If the named range is in another workbook, put the workbook's name before the range name, for example:

=VLOOKUP(A2, 'Price List.xlsx'!Prices_2020, 3, FALSE)

Such formulas are far more understandable, aren't they? Besides, using named ranges can be a good alternative to absolute references. Since a named range doesn't change, you can be sure that your table array will remain locked no matter where the formula is moved or copied.

If you have converted your lookup range into a fully-functional Excel table, then you can do a Vlookup based on the table name, e.g. Price_table in the below formula:

=VLOOKUP(A2, Price_table, 3, FALSE)

Table references, also called structured references, are resilient and immune to many data manipulations. For instance, you can remove or add new rows to your lookup table without worrying about updating the references.

Using wildcards in VLOOKUP formula

Like many other formulas, the Excel VLOOKUP function accepts the following wildcard characters:

  • Question mark (?) to match any single character.
  • Asterisk (*) to match any sequence of characters.

Wildcards prove really useful in many situations:

  • When you do not remember the exact text you are looking for.
  • When you are looking for a text string that is part of the cell contents.
  • When a lookup column contains leading or trailing spaces. In that case, you may rack your brain trying to figure out why a normal formula does not work.

Example 1. Look up text starting or ending with certain characters

Suppose you want to find a certain customer in the below database. You do not remember the surname, but you are confident that it starts with "ack".

To return the last name from column A, use the following Vlookup wildcard formula:

=VLOOKUP("ack*", $A$2:$B$10, 1, FALSE)

To retrieve the license key from column B, use this one (the difference is only in the column index number):

=VLOOKUP("ack*", $A$2:$B$10, 2, FALSE)

You can also enter the known part of the name in some cell, say E1, and combine the wildcard character with the cell reference:

=VLOOKUP(E1&"*", $A$2:$B$10, 1, FALSE)

The below screenshot shows the results:
Look up text that begins with certain characters.

Below are a few more VLOOKUP formulas with wildcards.

Find the last name ending with "son":

=VLOOKUP("*son", $A$2:$B$10, 1, FALSE)

Get the name that starts with "joh" and ends with "son":

=VLOOKUP("joh*son", $A$2:$B$10, 1, FALSE)

Pull a 5-character last name:

=VLOOKUP("?????", $A$2:$B$10, 1, FALSE)

Example 2. VLOOKUP wildcard based on cell value

From the previous example, you already know that it is possible to concatenate an ampersand (&) and a cell reference to make a lookup string. To find a value that contains a given character(s) in any position, put an ampersand before and after the cell reference.

Let's say, you wish to get a name corresponding to a certain license key, but you don't know the whole key, only a few characters. With the keys in column A, names in column B, and part of the target key in E1, you can do a wildcard Vlookup in this way:

Extract the key:

=VLOOKUP("*"&E1&"*", $A$2:$B$10, 1, FALSE)

Extract the name:

=VLOOKUP("*"&E1&"*", $A$2:$B$10, 2, FALSE)
VLOOKUP wildcard based on cell value.

Notes:

  • For a wildcard VLOOKUP formula to work correctly, use an exact match (FALSE is the last argument).
  • If more than one match is found, the first one is returned.

VLOOKUP TRUE vs FALSE

And now, it's time to take a closer look at the last argument of the Excel VLOOKUP function. Though optional, the range_lookup parameter is highly important. Depending on whether you choose TRUE or FALSE, your formula may yield different results.

Excel VLOOKUP exact match (FALSE)

If range_lookup is set to FALSE, a Vlookup formula searches for a value that is exactly equal to the lookup value. If two or more matches are found, the 1st one is returned. If an exact match is not found, the #N/A error occurs.

Excel VLOOKUP approximate match (TRUE)

If range_lookup is set to TRUE or omitted (default), the formula looks up the closest match. More precisely, it searches for an exact match first, and if an exact match is not found, looks for the next largest value that is less than the lookup value.

An approximate match Vlookup works with the following caveats:

  • The lookup column must be sorted in ascending order, from smallest to largest, otherwise a correct value may not be found.
  • If the lookup value is smaller than the smallest value in the lookup array, a #N/A error is returned.

The following examples will help you better understand the difference between an exact match and approximate match Vlookup and when each formula is best to be used.

Example 1. How to do an exact match Vlookup

To look up an exact match, just put FALSE in the last argument.

For this example, let's take the animal speed table, swap the columns, and try to find the animals that can run 80, 50 and 30 miles per hour. With the lookup values in D2, D3 and D4, enter the below formula in E2, and then copy it down to two more cells:

=VLOOKUP(D2, $A$2:$B$12, 2, FALSE)

As you can see, the formula returns "Lion" in E3 because they run exactly 50 per hour. For the other two lookup values an exact match is not found, and #N/A errors appear.
A VLOOKUP formula for exact match.

Example 2. How to Vlookup for approximate match

To look up an approximate match, there are two essential things you need to do:

  • Sort the first column of table_array from smallest to largest.
  • Use TRUE for the range_lookup argument or omit it.

Sorting the lookup column is very important because the VLOOKUP function stops searching as soon as it finds a close match smaller than the lookup value. If the data is not sorted properly, you may end up having really strange results or a bunch of #N/A errors.

For our sample data, an approximate match Vlookup formula goes as follows:

=VLOOKUP(D2, $A$2:$B$12, 2, TRUE)

And returns the following results:

  • For a lookup value of "80", "Cheetah" is returned because its speed (70) is the closest match that is smaller than the lookup value.
  • For a lookup value of "50", an exact match is returned (Lion).
  • For a lookup value of "30", a #N/A error is returned because the lookup value is less than the smallest value in the lookup column.

A VLOOKUP formula for approximate match.

Video: How to VLOOKUP in Excel

Step-by-step guidance on how to create and use a VLOOKUP formula in Excel.


Special tools to Vlookup in Excel

Undoubtedly, VLOOKUP is one of the most powerful and useful Excel functions, but it's also one of the most confusing ones. To make the learning curve less steep and experience more enjoyable, we included a couple of time-saving tools in our Ultimate Suite for Excel.

VLOOKUP Wizard - easy way to write complex formulas

The interactive VLOOKUP Wizard will walk you through the configuration options to build a perfect formula for the criteria you specify. Depending on your data structure, it will use the standard VLOOKUP function or an INDEX MATCH formula that can pull values from left.

To get your custom-tailored formula, this is what you need to do:

  1. Run the VLOOKUP Wizard.
  1. Choose your main table and lookup table.
  2. Specify the following columns (in many cases they are picked automatically):
    • Key column - the column in your main table containing the values to look up.
    • Lookup column - the column to look up against.
    • Return column - the column from which to retrieve values.
  3. Click the Insert button.

The following examples show the wizard in action.

Standard Vlookup

When the lookup column (Animal) is the leftmost column in the lookup table, a normal VLOOKUP formula for exact match is inserted:
Excel VLOOKUP formula for exact match.

Vlookup to the left

When the lookup column (Animal) is on the right side of the return column (Speed), the wizard inserts an INDEX MATCH formula to Vlookup right to left:
INDEX MATCH formula to Vlookup to the left.

Extra bonus! Due to the clever use of cells references, the formulas can be copied or moved to any column, without you having to update the references.

Merge Two Tables - formula-free alternative to Excel VLOOKUP

If your Excel files are enormously large and complex, the project's deadline is imminent, and you are looking for someone who can lend you a helping hand, try out the Merge Tables Wizard.

This tool is our visual and stress-free alternative to Excel's VLOOKUP function, which works this way:

  1. Select your main table.
  2. Select the lookup table.
  3. Choose one or several common columns as the unique identifier(s).
  4. Specify which columns to update.
  5. Optionally, choose the columns to add.
  6. Allow the Merge Tables Wizard a few seconds for processing… and enjoy the results :)

Merging two tables based on a common column.

That's how to use VLOOKUP in Excel at the basic level. In the next part of our tutorial, we will discuss advanced VLOOKUP examples that will teach you how to Vlookup multiple criteria, return all matches or Nth occurrence, perform double Vlookup, look up across multiple sheets with a single formula, and more. I thank you for reading and hope to see you next week!

Available downloads

Excel VLOOKUP formula examples (.xlsx file)
Ultimate Suite 14-day fully-functional version (.exe file)

You may also be interested in

233 comments

  1. EXECL 01
    DD NO BANK NAME CLEAR DATE
    70 Hdfc Bank Ltd 10-Jan-24
    70 Bank Of India 12-Jan-24
    70 Hdfc Bank Ltd 24-Jan-24
    71 Bank Of India 12-Jan-24
    71 Hdfc Bank Ltd 19-Jan-24
    72 Hdfc Bank Ltd 05-Jan-24
    72 Bank Of India 06-Feb-24
    73 Bank Of India 09-Jan-24
    73 Hdfc Bank Ltd 02-Feb-24
    74 Bank Of India 08-Jan-24
    74 Hdfc Bank Ltd 06-Feb-24

    EXECL 02
    DD NO BANK NAME CLEAR DATE
    70 HDFC BANK ?
    70 HDFC BANK LTD ?
    70 BANK OF INDIA ?
    71 HDFC BANK ?
    71 BANK OF INDIA ?
    72 HDFC BANK LTD ?
    72 bank of india ?
    73 HDFC BANK LTD ?
    73 THE KALUPUR ?
    73 BANK OF INDIA ?
    74 HDFC BANK ?
    74 BANK OF INDIA ?

    AS PER ABOVE TWO TYPE OF DIFFRENT EXECL I HAVE FIND CLEAR DATE ?

    PLEASE SUGGEST FORMULA

    1. Hi! Have you tried the methods described in this blog post? If you are not satisfied, please let me know and I will try to help you.

  2. Facing the issue while using vlookup formula between two sheets one sheet with 51 rows (a) and another with 6000 rows (b). I'm able to get the exact value for 51 rows in b what to do to get the exact value for all the 6000 rows?

  3. Hi

    Not sure if this is the right function to use but I am trying to return a value based multiple conditions for example;

    I have a list of emails with some emails being duplicate, each email is associated with a status of either "Open" or "Closed". When using a vlookup it doesn't return anything that's because the table array contains duplicates.

    Is there a way to return the email with a status of 'Closed'?

      1. Thanks for the shared links

        What if some the duplicated emails have the same status, could I add more criteria to the formula i.e. latest date of the duplicated emails?

          1. Is there any other way I can send you a sample of the data so you can see?

  4. Please don't do VLOOKUP or INDEX/MATCH anymore. These functions are beautifully replaces by XLOOKUP, which does everything the old functions do, but better.
    This blog post should be marked as obsolete...

    1. sir, i want vlookup formula next cell ...

  5. How can i obtain actual fee(tp student data base) from pricing table (subsheet) based on the program selected

  6. please help me.how to crosscheck data between 2 sheets in different workbook, i want to figure out how many account have made payment?1 files did not yet made payment (contains 7000++ data in a row) and the other file already did(contains 75000++ data in a row).

  7. Hi. I need to send a screenshot in order to explain my question.
    But I'll try to explain via text:
    Column F contains a Unique number.
    Output in Column G should indicate the TAZ linked to that Unique number.
    My table array is columns I to J in the same worksheet.
    Column I contains TAZ numbers while column J contains Unique numbers.
    My formula in Column G (desired output) is: =VLOOKUP(F2;I:J;1;FALSE)
    But I get N/A
    Format of all cells in the formula is set to numerical. I've tried text as well.

    1. I have 14 different workbooks, the schedules of different group homes, and I'm trying to find the best way to link them so I can easily look up staff from each house and see who is working on each day in each house. Any suggestions?.

    2. Nevermind. I figured it out. Can't seem to delete my comment.
      The answer: INDEX and MATCH

  8. Please help me on using vlookup as a beginner

  9. thank you for teaching us

  10. please help how to use vlookup in excel files

  11. Dear Sir/Mam,

    Please advise us for listing product with code in excel sheet.

    Thanks,

    RAVI

  12. Hello! I need help. I'm trying to use a vlookup function to look up the names of sales representative managers by looking up based on the name of their store from another tab. I'm using VLOOKUP(F2,'SM data'!A:E,3,FALSE) and I get an N/A error.

    Translated, I'm doing this: VLOOKUP(Store name,'SM data tab'!A:E,store manager name,FALSE). What am I doing wrong here?

    1. Hello!
      Unfortunately, without seeing your data it is difficult to give you any advice. Please have a look at this article: Excel VLOOKUP not working - fixing N/A Error
      I hope it’ll be helpful. If something is still unclear, please feel free to ask.

      If you cannot solve the problem yourself, send us a small sample workbook with the source data and expected result to support@ablebits.com. Please shorten your tables to 10-20 rows/columns and include the link to your blog comment.

    2. For more specifics:

      Tab B displays data like this: store name, store manager name, store manager email. Store A, John Smith, john.smith@companyname.com

      in Tab A, I want cell G2 to return that John Smith is Barbara Lemming's store manager. I have 3,000 sales representatives that I need to do this for, with around 500 managers.

  13. Hi,
    i have typed in my formula:
    =VLOOKUP(A407,INDIRECT("'"&INDEX(REGIONS,MATCH(1,--(COUNTIF(INDIRECT("'"&REGIONS&"'!$A$2:$M$1000"),A407)>0),0))&"'!$A$2:$M$1000"),6,FALSE)

    when i close my spreadhseet and reopen it an "@" appears before the word "region" and my lookups all show #VALUE! why does it do this?

    =VLOOKUP(A407,INDIRECT("'"&INDEX(REGIONS,MATCH(1,--(COUNTIF(INDIRECT("'"&@REGIONS&"'!$A$2:$M$1000"),A407)>0),0))&"'!$A$2:$M$1000"),6,FALSE)

  14. Good morning! I am a Beginner Excel user and need help with Vlookup please in Excel. I have 2 spreadsheets:
    Spreadsheet1 has claim numbers in this format:
    12345
    67890
    Spreadsheet2 has the same Claim numbers, but in a new format with a suffix for example:
    12345AIAMD00
    67890AIAMD01
    How do I Vlookup to compare the Base ClaimID from Spreadsheet 2 to Spreadsheet1? Please help, thanks!

    1. Hello!
      Use INDEX + MATCH or LOOKUP functions to solve your problem:

      =INDEX($F$2:$F$30,MATCH(I2,LEFT($E$2:$E$30,5),0))

      =LOOKUP(I2,LEFT($E$2:$E$3,5),$F$2:$F$3)

      I2 contains text "12345"
      I hope this will help, otherwise please do not hesitate to contact me anytime.

  15. I have a pivot table as follows
    A B
    1 Labels Count
    2 30
    3 Malware 2
    4 Breach 1
    5 Compliance 8
    I tried following vlookup formula to get the count of blank label and got an error #N/A instead of actual value 30. Appreciate your help on figuring out the error.
    =VLOOKUP("",A:B,2,FALSE)
    It works perfectly for labels which are not blank. i.e. =VLOOKUP("Account Issues",A:B,2,FALSE)

  16. Alternating between reading the information and doing it in Excel at the same time for almost an hour, I finally got the result that I wanted! Thank you for teaching us noobs :)

  17. I am trying to lookup a value in a column that contains the results of a MID function and I get #N/A. If I use Ctrl F(Find), It will not find the value but if I change the Option from formula to value, it will find the value I am looking for. How can I find my value using vlookup?

    1. Hello Eloisa!
      I’m sorry but your task is not entirely clear to me. For me to be able to help you better, please describe your task in more detail. Please specify what you were trying to find, what formula you used and what problem or error occurred. Give an example of the source data and the expected result.
      It’ll help me understand it better and find a solution for you. Thank you.

  18. I want to fetch return from row in stead of column. please help me in this regards by providing the example

    =vlookup(E1,A2:B6,2,FALSE)
    here 2 : return a match from this column

    but i want to pick a match from row in that case what will be the formula

    Thanks in advance

    1. Hello!
      I’m sorry but your task is not entirely clear to me.
      For me to be able to help you better, please describe your task in more detail. Please let me know in more detail what you were trying to find. Explain "i want to pick a match from row". Give an example of the source data and the expected result. It’ll help me understand it better and find a solution for you. Thank you.

  19. I'm looking for a formula to return the following, in column b I have a list of tasks,in another column say j these have a a number 1 for complete 0 or incomplete, how to I cross reference the column and description to fill a column on another sheet, I can't get it to return more than one result?? Thanks

  20. Excellent tutorial on Vlookup. Lucidly explained and precise. Topics covered pretty much every thing and impressive.

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)