implemented a bunch of shit and also some shit that don't work