Canvas object have drag & drop ability.

- Refactor shape to have a more object oriented approach.