Multi files to addon
Every blender addon is simply a python package with some small differences. if you use multiple files in your addon (package) you should have an __init__.py file in the main folder (and also in every folder in your directory so you can import them  as your local packages). blender recognizes your package as an addon, if you have bl_info (dictionary) and register and unregister functions in your __init__.py file. as described in the manual the simplest example of addons is:
bl_info = {
    &quot;name&quot;: &quot;My Test Add-on&quot;,
    &quot;blender&quot;: (2, 80, 0),
    &quot;category&quot;: &quot;Object&quot;,
}
def register():
    print(&quot;Hello World&quot;)
def unregister():
    print(&quot;Goodbye World&quot;)

relative importing also works because its python but importing is also a little bit different in addons. you should check if bpy module is added before. for example if you have utils and draw package(folders including __init__.py files) or modules(*.py files) you should import them like this:
if &quot;bpy&quot; in locals():
    import importlib
    importlib.reload(utils)
    importlib.reload(draw)
else:
    from . import utils
    from . import draw

the rest is as same as every python package and depends on you!