implement drag, drop, resize, and module add functionality