I have a feeling your code is not going to be simple