# Creating your own buttons

One of the unique features of Opus is that the toolbars are completely configurable. All toolbar (and menu) buttons are built up from one or more commands, consisting of either:

* The [internal commands](../reference/command_reference/internal_commands), which give access to the internal features of Opus. All the internal commands have a set of [arguments](creating_your_own_buttons/internal_command_arguments) that can be used to modify their behavior to produce different results (e.g. to move a file instead of copy it).
* External commands, which let you run third-party programs from within Opus. Using [special codes](creating_your_own_buttons/passing_files_to_external_programs) you can pass information like the names of selected files to external programs, integrating them more fully into your Opus configuration.

Toolbar buttons can also be written as a script using an ActiveX scripting language like VBScript or JScript. See the page on [Scripting](../scripting) for more detail on script buttons.

A few points which may not be immediately apparent:

* Toolbar buttons and drop-down menus are the same thing. A drop-down menu is really just vertical toolbar.
* All the toolbar buttons and menus that come with Opus can be changed. You can edit the supplied buttons (move them around, delete them, modify their function, etc), and add your own buttons (either to the standard toolbars, or to toolbars that you create). You can even turn off the standard toolbars altogether.
* If you ever want to return to the default toolbars, just right-click any toolbar and choose the Reset to Defaults command.

And the most important thing to remember about Opus is:

_**If you don't like something, you can probably change it!**_

There are many aspects to button and toolbar editing, explained in detail in the pages within this section. To get started, see the list below, or expand this section within the Contents tab on the left.

More:

[Editing the Toolbar](creating_your_own_buttons/editing_the_toolbar)\
[Command Editor](creating_your_own_buttons/command_editor)\
[User-defined commands](creating_your_own_buttons/user-defined_commands)\
[Synchronous and Asynchronous functions](creating_your_own_buttons/synchronous_and_asynchronous_functions)\
[Internal Command Arguments](creating_your_own_buttons/internal_command_arguments)\
[Passing files to external programs](creating_your_own_buttons/passing_files_to_external_programs)\
[Command modifiers](creating_your_own_buttons/command_modifiers)\
[MS-DOS Batch commands](creating_your_own_buttons/ms-dos_batch_commands)\
[Embedding Rename Scripts](creating_your_own_buttons/embedding_rename_scripts)\
[DDE Functions](creating_your_own_buttons/dde_functions)\
[Embedded functions](creating_your_own_buttons/embedded_functions)
