capacity is now user-defined