# Introduction

One of the main goals of Blueprint is to promote good software design through accepted Software Engineering concepts such as modularization, separation of concerns, software design patterns,  software design principles, and clean code. To support this goal, Blueprint uses its own [object model](https://github.com/onehilltech/base-object) that allows us to promote and use good software design practices without compromising the powerful features of JavaScript.&#x20;

Much of the inspiration for our [object model](https://github.com/onehilltech/base-object) is derived from our experience using [EmberJS](https://emberjs.com/) for front-end development. Similar to core objects in EmberJS, we support many of the same features. The reason for deviation is that we need something specific to our framework needs, which we can extend as needed. We also wanted it to support ES6 out-of-the-box.

{% hint style="info" %}
The [object model](https://github.com/onehilltech/base-object) library for Blueprint is a stand-alone project that you can integrate into your own project. The Blueprint-specific concepts are not part of the [object model](https://github.com/onehilltech/base-object).
{% endhint %}

If you are familiar with object-oriented programming, then you will find learning Blueprint's object model fairly easy. If you are not familiar with object-oriented programming, it should not be hard to pick up.

Happy Coding!


---

# 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://blueprint.onehilltech.com/developer-guide/the-object-model/introduction.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.
