final version of the procedural version. next version is the improved OO version
improved serial version. now with OO. this is more beautiful and faster