Got required to work, as far as I can tell, implemented everything in for B, but I kinda shotgunned it, so no promises