included changes from Hackhands