Динамическое добавление и удаление компонентов с формы

Нужно написать программу, в рабочую область которой можно было бы помещать графические примитивы и работать с ними. Я решил использовать в качестве примитива компонент TShape. Однако необходимо будет работать с каким то динамическим списком размещенных на форме TShape'ов, чтобы преобразовывать или удалять старые и добавлять новые. Есть ли в Delphi стандартные способы решения этой проблемы или придется ручками вбивать список указателей на каждый TShape?