More functionality, lots of cleanup, code is a bit less intractable