a bunch of crap i dunno
adding requirements