Took quite a while to finish
@Cabalex and @kris235 for the original, unmodified engine Engine modified by me