Classes and methods are the fundamental building blocks of metz. A class gets rendered as a box, and its methods as smaller boxes inside it. The only methods that are skipped are private ones. A method can call other methods, from the same class, as well as others and that call gets rendered as a line between the caller and callee boxes. And that’s it. It’s that simple! But let’s create a hello world program, just to drive the point home. And also because what kind of tutorial doesn’t have a hello world?!
And here’s the code for it:

class Main {
    /**
     * Is reponsible for many important things.
    */
    hello() {
        const result = this.world('Hello');
        std.log(result);
    }

    /**
     * Does all the heavy lifting!
    */
    world(arg: string) {
        return `${arg} World!`
    }
}
Notice that the comments and input/output types also get rendered. So it’s not just a dumb box. It has other essential properties that help us understand the component at a glance.
Try playing with it in the playground, and see what happens when you add comments to the Main class.
So, we have a class and and some methods. But what do we do with it? Who is instantiating it and running the code? Let’s answer that in the next section with Stories.