WIP add comments, shuffle around
WIP add dfd