optional doesn't really work cause it could be null
do I throw an exception for the iteration to stop?
do I have a special magic value for None that's not null? u32::MAX? 1?
how do I return an option from my function? do I really need to allocate a whole object for it?