I changed a bit of this myself, going to be a fun merge.