# Hello, Melder **Beginner.** The whole runtime in four lines. ```python import melder as md class Greeter: """A plain class — no base class, no metaclass, no decorator.""" def greet(self) -> str: return "hello from a melded instance" book = md.Spellbook() book.bind(spell=Greeter, existence="unique") conduit = book.conjure() greeter = conduit.meld("Greeter") print(greeter.greet()) assert conduit.meld("Greeter") is greeter # `unique` → same instance ``` Your classes stay plain Python. Everything lives on `md.*` — if you ever need a deep import path, that's a bug in our public surface, not a pattern to copy. Pass the Python class or callable to `bind`; resolve it by its quoted registered name with `meld("Greeter")`. The tutorials use this name-based lookup throughout. Keep opaque machine identities explicit with `meld(spell_id=...)`. ## Runnable examples - [Hello Melder](../examples/hello-melder.md) — Beginner 01 [All beginner examples](../examples/beginner/index.md) · [Level contents](index.md) · [Full contents](../contents.md) [Canonical page source](https://github.com/Synaptic724/melder/blob/0b443cc5f6f77b37ae2f60ff298bec0ea9497d7a/README.md)