Snap(ple) in progress

Snapping seems to work visually, but the underlying functionality still
needs to be fiddled with.