Restructured and Did quite a new implementation.

Won't work just yet, though!