add snaping / drag/ rotation function