implement snap and zoom (version 1.2 rc)