Как сделать визуальный редактор схем?

Добрый день.

Стоит задача написать приложение, которое позволит в графическом виде строить схемы. Т.е. хотелось бы visio на минималках. Грубо говоря, пару десятков графических элементов на панельке. Оттуда мышкой можно перетянуть элемент в рабочую область. Так же, мышкой, кликнув по какому-нибудь углу элемента, можно построить связи с другим элементом. Всё это планируется сохранять в каком-то формате на диске.

Теперь, собственно, вопрос:

- Какие структуры данных использовать для элементов на схеме?

- Как реализовать хранение всех элементов в памяти во время редактирования?

- Как это всё по потокам лучше развести?

- Возможно, есть литература, где всё это уже описано?