Image class is just array of palette indices converted from the rgb data of any image by using euclidian distance between palette rgb and pixel rgb. Works well.
A disgusting little race condition has appeared, running will result in a black screen 70% of the time >:(
TODO:
lambda functions referencing non static graphics methods instead of making graphics methods static
state manager (everything is hodge podged into graphics and pycron objects)
sort math functions into relevant places (trig, random etc)