layout opt by obj