complete structural overhaul

completely overhauled the plugin to use object-based scoping inside of the plugin rather than arbitrary scoping, which was causing inconsistencies
fixed an issue related to dynamic heights, the plugin now only goes into absolute positioning mode while switching and otherwise just uses static positioning which handles wrapping correctly