Finally all finished, might add comments still