Added placing of components, and undo and redo functionality