algorithm has been rethought and more of a dynamic approach has been taken, all lists and now numpy lists so their indexes can be called