some refactoring, brushes now hold their own cursor