Use a custom package name. Also dispatch functions to funcs.el files. With this default configuration users using ivy instead of helm still get a good helm base configuration (UI and Key bindings).