everything modified by tknop