updating this and rewriting these modules to not suck