refactor & add loading dialog, feedback
add plugin system
add plugin system