Refactored tools (snapping not yet implemented)