A lot of polish changes. Also requires a few new libraries.