# Organizing your code / config

A flxbl project is all about ensuring your Salesforce Org is well modularized in terms of functionality, as well as the deployment of the modules utilizes various forms of package-based development options available within Salesforce.

Traversing the concept of packaging can be a daunting task. In our exuberance of adoption, we cannot lose sight of purpose and value. Packaging for sake of packaging is a path toward disaster; just a road trip to nowhere. You wind up with a lot of cost and lost time.

### Pillars of a Package

There exist three pillars of a Package which include *Encapsulation*, *High Cohesion* and *Reusability*. These pillars define a package as an entity not reliant on the environment/Org it exists in; except for standard Salesforce components.

| Encapsulation | Defines the bundling of data with the methods that operate on said data. Encapsulation is used to hide the values or state of a structured data object inside a package                         |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| High Cohesion | Defines how closely all the components in a package support a common purpose                                                                                                                    |
| Reusable      | The package can be reused without consequences of the environment; morphing to each environment. Please note, if a package has a dependency, then one need to adhere to the guiding principles. |
|               |                                                                                                                                                                                                 |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.flxbl.io/flxbl/techniques/development-practices/organizing-your-code-config.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
