add flatten()