more powerful extend