add comments here and here please, this is a pain to read :(