Implement more element types + undo/redo history based