Oh, and the implementation may change, if I have to optimize it I may start adding maps and stuff to make it faster, so to make this possible I make people call as specific functions as possible.