replace that shitty GPtrArray with my own dynamic array type