wrote all of the side things. rollback unimplemented