flexible for different dimensions
adapt to the change of interface