Learning HTML code can seem daunting at first, but with the right approach, it can be an enjoyable and rewarding experience. At LEARNS.EDU.VN, we offer structured learning paths and resources to help you master HTML and other web development skills. Let’s explore how you can effectively learn HTML coding, covering everything from basic concepts to advanced techniques, ensuring you gain a solid foundation in web development and enhance your web design capabilities.
1. What Is HTML and Why Should I Learn It?
HTML, or HyperText Markup Language, is the standard markup language for creating web pages. It provides the structure and content of a website. Understanding HTML is essential for anyone looking to build or modify websites, as it forms the backbone of every web page you see on the internet.
1.1. Understanding the Basics of HTML
HTML uses tags to define different elements on a web page, such as headings, paragraphs, images, and links. These tags tell the browser how to display the content. For instance, the <h1>
tag defines a main heading, while the <p>
tag defines a paragraph.
- Tags: These are keywords enclosed in angle brackets (e.g.,
<html>
,<head>
,<body>
). - Elements: An HTML element is defined by a start tag, some content, and an end tag (e.g.,
<p>This is a paragraph.</p>
). - Attributes: These provide additional information about HTML elements. They are specified in the start tag (e.g.,
<img src="image.jpg" alt="My Image">
).
1.2. The Importance of Learning HTML for Web Development
Learning HTML is crucial for several reasons:
- Foundation for Web Development: HTML is the foundation upon which all websites are built. Without a solid understanding of HTML, it’s difficult to work with other web technologies like CSS and JavaScript effectively.
- Career Opportunities: Web development is a growing field, and HTML skills are in high demand. Whether you want to become a front-end developer, a web designer, or a full-stack developer, HTML is a must-have skill.
- Customization and Control: Knowing HTML allows you to customize and control the appearance and functionality of your website. You can create unique designs, optimize for search engines, and ensure your site meets your specific needs.
- Understanding Website Structure: HTML provides a clear understanding of how websites are structured, making it easier to troubleshoot issues and optimize for performance.
1.3 Key Reasons Why HTML is Essential for Modern Web Development
Reason | Description |
---|---|
Foundational Skill | HTML is the cornerstone of all web development projects. |
Universal Compatibility | HTML is supported by all browsers and devices. |
SEO Benefits | Properly structured HTML improves website visibility and search engine rankings. |
Easy to Learn | HTML is relatively straightforward to learn, making it accessible to beginners. |
Versatility | HTML works seamlessly with other web technologies like CSS and JavaScript. |
2. Setting Up Your HTML Learning Environment
Before you start writing HTML code, you need to set up your learning environment. This involves choosing a text editor and a web browser.
2.1. Choosing the Right Text Editor
A text editor is where you will write and edit your HTML code. There are many text editors available, both free and paid. Some popular options include:
- Visual Studio Code (VS Code): A free, powerful editor with extensions for HTML, CSS, and JavaScript.
- Sublime Text: A sophisticated text editor with a clean interface and many useful features.
- Atom: A free, open-source editor developed by GitHub, known for its customizability.
- Notepad++: A free editor for Windows, popular for its simplicity and speed.
When choosing a text editor, consider the following features:
- Syntax Highlighting: This makes your code easier to read by coloring different parts of the code.
- Code Completion: This feature suggests code as you type, saving you time and reducing errors.
- Error Checking: Some editors can identify errors in your code, helping you fix them quickly.
- Customizability: The ability to customize the editor with themes, plugins, and settings to suit your preferences.
2.2. Selecting a Web Browser for Testing
A web browser is used to view your HTML code and see how it will look on a website. Popular browsers include:
- Google Chrome: A fast and reliable browser with excellent developer tools.
- Mozilla Firefox: An open-source browser with strong support for web standards.
- Safari: The default browser on macOS and iOS, known for its performance and security.
- Microsoft Edge: The modern browser from Microsoft, based on the Chromium engine.
It’s a good idea to test your HTML code in multiple browsers to ensure it looks and works correctly for all users.
2.3 Essential Tools and Resources for Learning HTML
Tool/Resource | Description |
---|---|
Text Editor | Software for writing and editing HTML code (e.g., VS Code, Sublime Text). |
Web Browser | Used to view and test HTML code (e.g., Chrome, Firefox). |
Online IDE | Web-based integrated development environments (e.g., CodePen, JSFiddle) for quick testing and sharing. |
Documentation | Official HTML documentation from the World Wide Web Consortium (W3C) for comprehensive reference. |
Online Courses | Structured courses on platforms like Coursera, Udemy, and Khan Academy. |
Tutorials | Websites like LEARNS.EDU.VN offering step-by-step HTML tutorials and examples. |
HTML Code Editor
3. Your First HTML Document: A Step-by-Step Guide
Creating your first HTML document is a simple yet important step in learning HTML. Here’s how to do it:
3.1. Basic HTML Structure
Every HTML document should follow a basic structure:
<!DOCTYPE html>
<html>
<head>
<title>My First HTML Document</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>This is my first HTML document.</p>
</body>
</html>
<!DOCTYPE html>
: This declaration defines the document type and tells the browser that this is an HTML5 document.<html>
: This is the root element of the HTML page and contains all other elements.<head>
: This element contains meta-information about the HTML document, such as the title, character set, and links to external resources like CSS stylesheets.<title>
: This element specifies a title for the HTML page (which is shown in the browser’s title bar or tab).<body>
: This element contains the visible page content, such as text, images, and links.<h1>
: This element defines a level 1 heading (the most important heading).<p>
: This element defines a paragraph.
3.2. Writing and Saving Your HTML File
- Open your text editor.
- Type the basic HTML structure as shown above.
- Save the file with a
.html
extension (e.g.,index.html
). Make sure to save the file in a location where you can easily find it.
3.3. Viewing Your HTML File in a Browser
- Locate the HTML file you just saved.
- Double-click the file to open it in your default web browser.
- You should see the text “Hello, World!” as a large heading and “This is my first HTML document.” as a paragraph below it.
3.4: HTML Element Breakdown
Element | Purpose |
---|---|
<!DOCTYPE html> |
Declaration that defines the document to be HTML5 |
<html> |
Root element of an HTML page |
<head> |
Contains meta-information about the HTML document |
<title> |
Specifies a title for the HTML page (which is shown in the browser’s title bar or tab) |
<body> |
Contains the visible page content |
<h1> to <h6> |
Defines HTML headings |
<p> |
Defines a paragraph |
<a> |
Defines a hyperlink |
<img> |
Defines an image |
4. Essential HTML Tags and Attributes
Understanding the most common HTML tags and attributes is crucial for building effective web pages. Here are some of the most important ones:
4.1. Text Formatting Tags
These tags are used to format text on a web page:
<h1>
to<h6>
: Define headings of different levels.<h1>
is the most important and<h6>
is the least.<p>
: Defines a paragraph.<b>
: Defines bold text.<strong>
: Defines important text (usually displayed as bold).<i>
: Defines italic text.<em>
: Defines emphasized text (usually displayed as italic).<br>
: Inserts a single line break.<hr>
: Defines a thematic break in an HTML page (usually displayed as a horizontal rule).
4.2. List Tags
These tags are used to create lists:
<ul>
: Defines an unordered (bulleted) list.<ol>
: Defines an ordered (numbered) list.<li>
: Defines a list item.
Example:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<ol>
<li>First item</li>
<li>Second item</li>
<li>Third item</li>
</ol>
4.3. Link and Image Tags
These tags are used to create links and display images:
<a>
: Defines a hyperlink. Thehref
attribute specifies the URL of the link.<img>
: Defines an image. Thesrc
attribute specifies the URL of the image, and thealt
attribute provides alternative text if the image cannot be displayed.
Example:
<a href="https://www.LEARNS.EDU.VN">Visit LEARNS.EDU.VN</a>
<img src="image.jpg" alt="My Image">
4.4. Table Tags
These tags are used to create tables:
<table>
: Defines a table.<tr>
: Defines a table row.<th>
: Defines a table header.<td>
: Defines a table cell.
Example:
<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>
<tr>
<td>John</td>
<td>30</td>
</tr>
<tr>
<td>Jane</td>
<td>25</td>
</tr>
</table>
4.5. Form Tags
These tags are used to create HTML forms for user input:
<form>
: Defines an HTML form for user input.<input>
: Defines an input field where users can enter data. Thetype
attribute specifies the type of input (e.g., text, password, email).<textarea>
: Defines a multi-line text input control.<button>
: Defines a clickable button.<select>
: Defines a drop-down list.<option>
: Defines an option in a drop-down list.
Example:
<form>
<label for="name">Name:</label><br>
<input type="text" id="name" name="name"><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email"><br><br>
<input type="submit" value="Submit">
</form>
4.6: Key HTML Attributes for Enhancing Web Pages
Attribute | Tag(s) | Purpose |
---|---|---|
href |
<a> |
Specifies the URL of the page the link goes to |
src |
<img> |
Specifies the path to the image |
alt |
<img> |
Specifies an alternate text for an image, if the image cannot be displayed |
class |
All | Specifies a class name for an element (used by CSS and JavaScript) |
id |
All | Specifies a unique id for an element |
style |
All | Specifies inline CSS styles for an element |
title |
All | Specifies extra information about an element (displayed as a tooltip on mouse hover) |
5. Structuring Your HTML Document with Semantic Elements
Semantic elements are HTML5 tags that provide meaning to the structure of your web page. They make your code more readable and accessible, and they also help search engines understand the content of your page.
5.1. Understanding Semantic HTML
Semantic HTML uses tags that describe the meaning of the content they contain. For example, instead of using a <div>
tag with a class of “header,” you can use the <header>
tag.
5.2. Common Semantic Elements
<header>
: Defines a header for a document or section.<nav>
: Defines a set of navigation links.<main>
: Specifies the main content of a document.<article>
: Defines an independent, self-contained content.<aside>
: Defines content aside from the page content (e.g., a sidebar).<footer>
: Defines a footer for a document or section.
5.3. Example of Semantic HTML Structure
<!DOCTYPE html>
<html>
<head>
<title>Semantic HTML Example</title>
</head>
<body>
<header>
<h1>My Website</h1>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h2>Article Title</h2>
<p>This is the main content of the article.</p>
</article>
<aside>
<h3>Related Articles</h3>
<ul>
<li><a href="#">Article 1</a></li>
<li><a href="#">Article 2</a></li>
</ul>
</aside>
</main>
<footer>
<p>© 2023 My Website</p>
</footer>
</body>
</html>
5.4: Benefits of Using Semantic HTML
Benefit | Description |
---|---|
Improved Accessibility | Semantic elements make it easier for screen readers and other assistive technologies to interpret the content. |
Better SEO | Search engines can better understand the structure and content of the page, improving search rankings. |
Enhanced Readability | Semantic tags make the code more readable and maintainable for developers. |
Code Consistency | Encourages a consistent and structured approach to web development. |
Future-Proofing | Semantic HTML is more likely to be compatible with future web standards and technologies. |
6. Styling Your HTML with CSS
While HTML provides the structure and content of a web page, CSS (Cascading Style Sheets) is used to style the page and control its appearance. Learning CSS is essential for creating visually appealing and professional-looking websites.
6.1. Introduction to CSS
CSS is a style sheet language used to describe the look and formatting of an HTML document. It allows you to control the colors, fonts, layout, and other visual aspects of your website.
6.2. Ways to Add CSS to HTML
There are three ways to add CSS to an HTML document:
- Inline CSS: Styles are applied directly to HTML elements using the
style
attribute. - Internal CSS: Styles are defined within the
<style>
tag in the<head>
section of the HTML document. - External CSS: Styles are defined in a separate
.css
file, which is linked to the HTML document using the<link>
tag.
Example of Inline CSS:
<h1 style="color: blue; text-align: center;">Hello, World!</h1>
Example of Internal CSS:
<!DOCTYPE html>
<html>
<head>
<title>Internal CSS Example</title>
<style>
h1 {
color: blue;
text-align: center;
}
</style>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
Example of External CSS:
- Create a file named
styles.css
with the following content:
h1 {
color: blue;
text-align: center;
}
- Link the CSS file to your HTML document:
<!DOCTYPE html>
<html>
<head>
<title>External CSS Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
6.3. Basic CSS Syntax
CSS rules are made up of a selector and a declaration block:
- Selector: Specifies the HTML element you want to style (e.g.,
h1
,p
,body
). - Declaration Block: Contains one or more declarations separated by semicolons. Each declaration includes a CSS property name and a value, separated by a colon.
selector {
property: value;
property: value;
}
For example:
h1 {
color: blue;
text-align: center;
}
6.4: Common CSS Properties for Styling HTML Elements
Property | Description |
---|---|
color |
Sets the color of the text. |
font-size |
Sets the size of the text. |
font-family |
Sets the font of the text. |
background-color |
Sets the background color of an element. |
margin |
Sets the margin space around an element. |
padding |
Sets the padding space inside an element. |
border |
Sets the border around an element. |
text-align |
Specifies the horizontal alignment of text within an element. |
display |
Specifies the display behavior of an element (e.g., block, inline, flex). |
7. Making Your Website Interactive with JavaScript
JavaScript is a scripting language that allows you to add interactivity and dynamic behavior to your website. While HTML and CSS are used for structure and styling, JavaScript is used to make your website respond to user actions and perform complex tasks.
7.1. Introduction to JavaScript
JavaScript is a high-level, interpreted programming language that enables you to create interactive web pages. It can be used to handle user input, manipulate the DOM (Document Object Model), and communicate with servers.
7.2. Ways to Add JavaScript to HTML
There are two ways to add JavaScript to an HTML document:
- Internal JavaScript: JavaScript code is placed within the
<script>
tag inside the<head>
or<body>
section of the HTML document. - External JavaScript: JavaScript code is written in a separate
.js
file, which is linked to the HTML document using the<script>
tag with thesrc
attribute.
Example of Internal JavaScript:
<!DOCTYPE html>
<html>
<head>
<title>Internal JavaScript Example</title>
</head>
<body>
<h1>Hello, World!</h1>
<button onclick="myFunction()">Click Me</button>
<script>
function myFunction() {
alert("Hello from JavaScript!");
}
</script>
</body>
</html>
Example of External JavaScript:
- Create a file named
script.js
with the following content:
function myFunction() {
alert("Hello from JavaScript!");
}
- Link the JavaScript file to your HTML document:
<!DOCTYPE html>
<html>
<head>
<title>External JavaScript Example</title>
<script src="script.js"></script>
</head>
<body>
<h1>Hello, World!</h1>
<button onclick="myFunction()">Click Me</button>
</body>
</html>
7.3. Basic JavaScript Syntax
JavaScript syntax is similar to other programming languages like C++ and Java. Here are some basic concepts:
- Variables: Used to store data. Variables are declared using the
var
,let
, orconst
keyword. - Data Types: Include numbers, strings, booleans, arrays, and objects.
- Operators: Used to perform operations on data (e.g.,
+
,-
,*
,/
,=
,==
). - Functions: Blocks of code that perform a specific task. Functions are defined using the
function
keyword. - Conditional Statements: Used to make decisions based on conditions (e.g.,
if
,else if
,else
). - Loops: Used to repeat a block of code multiple times (e.g.,
for
,while
).
7.4: Common Uses of JavaScript in Web Development
Use Case | Description |
---|---|
DOM Manipulation | Modifying the HTML structure and content of a page dynamically. |
Event Handling | Responding to user interactions such as clicks, form submissions, and keyboard input. |
Form Validation | Ensuring that user input is valid before submitting a form. |
Animations | Creating animated effects and transitions. |
AJAX | Asynchronously communicating with the server to fetch data without reloading the page. |
Cookies | Storing and retrieving data on the user’s computer. |
8. Responsive Web Design with HTML and CSS
Responsive web design is the practice of creating websites that adapt to different screen sizes and devices. With the increasing use of mobile devices, it’s essential to ensure your website looks and works well on all devices.
8.1. Understanding Responsive Design
Responsive design uses flexible layouts, flexible images, and CSS media queries to create a website that responds to the user’s device.
8.2. Meta Viewport Tag
The meta viewport tag is used to control the viewport settings for mobile devices. It should be included in the <head>
section of your HTML document:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
width=device-width
: Sets the width of the viewport to the width of the device.initial-scale=1.0
: Sets the initial zoom level when the page is first loaded.
8.3. Flexible Layouts
Flexible layouts use relative units like percentages and em
s instead of fixed units like pixels. This allows the layout to adapt to different screen sizes.
Example:
.container {
width: 90%;
margin: 0 auto;
}
.column {
width: 50%;
float: left;
}
8.4. Flexible Images
Flexible images scale to fit their container. This can be achieved using the max-width
property:
img {
max-width: 100%;
height: auto;
}
8.5. CSS Media Queries
CSS media queries allow you to apply different styles based on the characteristics of the device, such as screen size, orientation, and resolution.
Example:
/* Default styles for larger screens */
.container {
width: 960px;
margin: 0 auto;
}
/* Media query for screens smaller than 960px */
@media (max-width: 960px) {
.container {
width: 100%;
}
}
/* Media query for screens smaller than 600px */
@media (max-width: 600px) {
.column {
width: 100%;
float: none;
}
}
8.6: Best Practices for Implementing Responsive Web Design
Practice | Description |
---|---|
Mobile-First | Start designing for mobile devices and then progressively enhance the design for larger screens. |
Fluid Grids | Use flexible grid layouts that adapt to different screen sizes. |
Flexible Images | Ensure images scale properly without losing quality. |
Media Queries | Use media queries to apply different styles based on device characteristics. |
Testing | Regularly test the website on various devices and browsers to ensure responsiveness. |
9. HTML5 APIs and Advanced Features
HTML5 introduced several new APIs and features that allow you to create more advanced and interactive web applications.
9.1. Geolocation API
The Geolocation API allows you to retrieve the user’s geographical location. This can be used to provide location-based services, such as mapping applications and local search.
Example:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
alert("Geolocation is not supported by this browser.");
}
function showPosition(position) {
alert("Latitude: " + position.coords.latitude +
"nLongitude: " + position.coords.longitude);
}
9.2. Canvas API
The Canvas API provides a way to draw graphics on the web page using JavaScript. It can be used to create animations, games, and data visualizations.
Example:
<canvas id="myCanvas" width="200" height="100"></canvas>
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect(0, 0, 150, 75);
</script>
9.3. Drag and Drop API
The Drag and Drop API allows you to enable drag-and-drop functionality on your web page. This can be used to create interactive interfaces and file uploaders.
Example:
<div id="dragTarget" style="width:200px; height:100px; border:1px solid black;"
ondrop="drop(event)" ondragover="allowDrop(event)">
<p>Drag elements here</p>
</div>
<div id="draggableElement" draggable="true" ondragstart="drag(event)">
This element is draggable
</div>
<script>
function allowDrop(event) {
event.preventDefault();
}
function drag(event) {
event.dataTransfer.setData("text", event.target.id);
}
function drop(event) {
event.preventDefault();
var data = event.dataTransfer.getData("text");
event.target.appendChild(document.getElementById(data));
}
</script>
9.4. Web Storage API
The Web Storage API provides a way to store data in the user’s browser. This can be used to store user preferences, application data, and offline data.
Example:
// Store data
localStorage.setItem("name", "John");
// Retrieve data
var name = localStorage.getItem("name");
alert("Name: " + name);
// Remove data
localStorage.removeItem("name");
// Clear all data
localStorage.clear();
9.5: Other Notable HTML5 APIs and Features
API/Feature | Description |
---|---|
WebSockets | Enables real-time, bidirectional communication between the client and server. |
Web Workers | Allows running JavaScript code in the background, without blocking the main thread. |
Server-Sent Events | Allows the server to push updates to the client in real-time. |
Audio and Video | Provides native support for playing audio and video content without the need for plugins. |
File API | Enables access to files on the user’s local file system. |
10. Validating and Testing Your HTML Code
Validating and testing your HTML code is crucial for ensuring that your website works correctly and is accessible to all users.
10.1. HTML Validation
HTML validation is the process of checking your HTML code against the official HTML specifications to ensure that it is valid and well-formed.
You can use the W3C Markup Validation Service to validate your HTML code. Simply copy and paste your code into the validator, or upload your HTML file.
10.2. CSS Validation
CSS validation is the process of checking your CSS code against the official CSS specifications to ensure that it is valid and well-formed.
You can use the W3C CSS Validation Service to validate your CSS code. Simply copy and paste your code into the validator, or upload your CSS file.
10.3. Cross-Browser Testing
Cross-browser testing is the process of testing your website in multiple browsers to ensure that it looks and works correctly for all users.
You can use online tools like BrowserStack and Sauce Labs to test your website in different browsers and devices.
10.4. Accessibility Testing
Accessibility testing is the process of checking your website to ensure that it is accessible to users with disabilities.
You can use online tools like WAVE and Axe to identify accessibility issues in your website.
10.5: Key Steps for Effective HTML Testing and Validation
Step | Description |
---|---|
HTML Validation | Use the W3C Markup Validation Service to check for HTML syntax errors. |
CSS Validation | Use the W3C CSS Validation Service to check for CSS syntax errors. |
Cross-Browser Testing | Test the website on different browsers (Chrome, Firefox, Safari, Edge) to ensure compatibility. |
Responsive Testing | Ensure the website is responsive and works well on different devices (desktops, tablets, smartphones). |
Accessibility Testing | Use tools like WAVE and Axe to check for accessibility issues and ensure compliance with WCAG guidelines. |
Usability Testing | Get feedback from users to identify usability issues and areas for improvement. |
11. Optimizing Your HTML for SEO
Search Engine Optimization (SEO) is the practice of optimizing your website to rank higher in search engine results. While SEO involves many factors, optimizing your HTML code is an important part of the process.
11.1. Title Tag Optimization
The title tag is one of the most important SEO elements. It should accurately describe the content of the page and include relevant keywords.
Example:
<title>Learn HTML Code: A Comprehensive Guide | LEARNS.EDU.VN</title>
11.2. Meta Description Optimization
The meta description is a brief summary of the page content. It should be compelling and include relevant keywords.
Example:
<meta name="description" content="Learn HTML code with this comprehensive guide from LEARNS.EDU.VN. Master the basics and advanced techniques of HTML and build your own websites.">
11.3. Heading Tag Optimization
Heading tags ( <h1>
to <h6>
) should be used to structure the content of the page and highlight important topics. Use keywords in your headings where appropriate.
11.4. Image Optimization
Images should be optimized for SEO by using descriptive filenames and alt text. The alt text should describe the content of the image and include relevant keywords.
Example:
11.5. Internal and External Linking
Internal linking involves linking to other pages on your website. External linking involves linking to other websites. Both internal and external links can improve your SEO by providing context and credibility.
11.6: Key SEO Elements in HTML
Element | Purpose |
---|---|
<title> |
Specifies the title of the page, which is displayed in search engine results. |
<meta name="description"> |
Provides a brief summary of the page content. |
<h1> to <h6> |
Defines headings and subheadings, helping structure the content and highlight important topics. |
alt attribute on <img> |
Provides alternative text for images, which helps search engines understand the content of the image. |
<a> with href |
Creates hyperlinks to other pages, both internal and external, which improves navigation and SEO. |
12. Common Mistakes to Avoid When Learning HTML
Learning HTML can be challenging, and it’s easy to make mistakes along the way. Here are some common mistakes to avoid:
12.1. Forgetting to Close Tags
One of the most common mistakes is forgetting to close HTML tags. Every opening tag should have a corresponding closing tag.
Example of Incorrect Code:
<p>This is a paragraph.
Correct Code:
<p>This is a paragraph.</p>
12.2. Using Deprecated Tags
Some HTML tags have been deprecated and should no longer be used. These tags may not be supported by modern browsers and can cause accessibility issues.
12.3. Not Validating Your Code
Failing to validate your HTML code can lead to errors and inconsistencies. Always validate your code to ensure that it is valid and well-formed.
12.4. Ignoring Accessibility
Ignoring accessibility can make your website unusable for people with disabilities. Always