diff --git a/src/zcl_excel_collection.clas.abap b/src/zcl_excel_collection.clas.abap
new file mode 100644
index 0000000..868f5ed
--- /dev/null
+++ b/src/zcl_excel_collection.clas.abap
@@ -0,0 +1,84 @@
+CLASS zcl_excel_collection DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+
+ TYPES:
+ ty_collection TYPE STANDARD TABLE OF REF TO object .
+
+ DATA collection TYPE ty_collection READ-ONLY .
+
+ METHODS size
+ RETURNING
+ VALUE(size) TYPE i .
+ METHODS is_empty
+ RETURNING
+ VALUE(is_empty) TYPE abap_bool .
+ METHODS get
+ IMPORTING
+ !index TYPE i
+ RETURNING
+ VALUE(object) TYPE REF TO object .
+ METHODS get_iterator
+ RETURNING
+ VALUE(iterator) TYPE REF TO zcl_excel_collection_iterator .
+ METHODS add
+ IMPORTING
+ !element TYPE REF TO object .
+ METHODS remove
+ IMPORTING
+ !element TYPE REF TO object .
+ METHODS clear .
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS ZCL_EXCEL_COLLECTION IMPLEMENTATION.
+
+
+ METHOD add .
+ APPEND element TO collection.
+ ENDMETHOD.
+
+
+ METHOD clear .
+ CLEAR collection.
+ ENDMETHOD.
+
+
+ METHOD get .
+ READ TABLE collection INDEX index INTO object.
+ ENDMETHOD.
+
+
+ METHOD get_iterator .
+ CREATE OBJECT iterator
+ EXPORTING
+ collection = me.
+ ENDMETHOD.
+
+
+ METHOD is_empty.
+ is_empty = boolc( size( ) = 0 ).
+ ENDMETHOD.
+
+
+ METHOD remove .
+ DATA obj TYPE REF TO object.
+ LOOP AT collection INTO obj.
+ IF obj = element.
+ DELETE collection.
+ RETURN.
+ ENDIF.
+ ENDLOOP.
+ ENDMETHOD.
+
+
+ METHOD size.
+ size = lines( collection ).
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/zcl_excel_collection.clas.testclasses.abap b/src/zcl_excel_collection.clas.testclasses.abap
new file mode 100644
index 0000000..5ef517e
--- /dev/null
+++ b/src/zcl_excel_collection.clas.testclasses.abap
@@ -0,0 +1,37 @@
+CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
+
+ PRIVATE SECTION.
+ METHODS test01 FOR TESTING RAISING cx_static_check.
+ENDCLASS.
+
+
+CLASS ltcl_test IMPLEMENTATION.
+
+ METHOD test01.
+
+ DATA lo_collection TYPE REF TO zcl_excel_collection.
+
+ CREATE OBJECT lo_collection.
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lo_collection->size( )
+ exp = 0 ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lo_collection->is_empty( )
+ exp = abap_true ).
+
+* heh, yea, add the collection to itself :)
+ lo_collection->add( lo_collection ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lo_collection->size( )
+ exp = 1 ).
+
+ cl_abap_unit_assert=>assert_equals(
+ act = lo_collection->is_empty( )
+ exp = abap_false ).
+
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/zcl_excel_collection.clas.xml b/src/zcl_excel_collection.clas.xml
new file mode 100644
index 0000000..89f82e0
--- /dev/null
+++ b/src/zcl_excel_collection.clas.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ZCL_EXCEL_COLLECTION
+ E
+ abap2xlsx - Object Collection
+ 1
+ X
+ X
+ X
+ X
+
+
+
+
diff --git a/src/zcl_excel_collection_iterator.clas.abap b/src/zcl_excel_collection_iterator.clas.abap
new file mode 100644
index 0000000..d104dc2
--- /dev/null
+++ b/src/zcl_excel_collection_iterator.clas.abap
@@ -0,0 +1,52 @@
+CLASS zcl_excel_collection_iterator DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+ METHODS get_index
+ RETURNING
+ VALUE(index) TYPE i.
+ METHODS has_next
+ RETURNING
+ VALUE(has_next) TYPE abap_bool.
+ METHODS get_next
+ RETURNING
+ VALUE(object) TYPE REF TO object.
+ METHODS constructor
+ IMPORTING
+ collection TYPE REF TO zCL_excel_COLLECTION.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ DATA index TYPE i VALUE 0.
+ DATA collection TYPE REF TO zcl_excel_collection.
+ENDCLASS.
+
+
+
+CLASS ZCL_EXCEL_COLLECTION_ITERATOR IMPLEMENTATION.
+
+
+ METHOD constructor .
+ me->collection = collection.
+ ENDMETHOD.
+
+
+ METHOD get_index .
+ index = me->index.
+ ENDMETHOD.
+
+
+ METHOD get_next .
+ DATA obj TYPE REF TO object.
+ index = index + 1.
+ object = collection->get( index ).
+ ENDMETHOD.
+
+
+ METHOD has_next.
+ DATA obj TYPE REF TO object.
+ obj = collection->get( index + 1 ).
+ has_next = boolc( obj IS NOT INITIAL ).
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/zcl_excel_collection_iterator.clas.xml b/src/zcl_excel_collection_iterator.clas.xml
new file mode 100644
index 0000000..09546d0
--- /dev/null
+++ b/src/zcl_excel_collection_iterator.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_EXCEL_COLLECTION_ITERATOR
+ E
+ abap2xlsx - Object Iterator
+ 1
+ X
+ X
+ X
+
+
+
+