update: logic functions