added a bunch of algorithms