Several improvements

see the commits for what exactly has been changed. the public API should be the same as before, but will skip a few unnecessary commands.