support more dimensions