full_mask and part_mask now dynamic