a lot added, please read over