docking framework adapted from RavenDock