A distributed object storage system which comprises a plurality of redundant storage elements; and at least one controller node operable to: - receive a data object via a data communication network from an application; - disassemble said data object into a predetermined number of redundant sub blocks; and - store said predetermined number of said redundant sub blocks on a number of said storage elements being larger or equal to a desired spreading width, which consists of the sum of: - a minimal spreading requirement, corresponding to the minimal number of storage elements that must store sub blocks of said data object and are not allowed to fail; supplemented with - a maximal concurrent failures tolerance, corresponding to the number of storage elements that must store sub blocks of said data object and are allowed to fail concurrently; characterized in that at least one controller node is further operable to replicate said data object into a predetermined plurality of replication copies, if the size of said data object is smaller than a predetermined lower data object size threshold; and store said predetermined plurality of said replication copies on a corresponding plurality of said storage elements, and in that the at least one controller node is further operable such that: - each one of said redundant sub blocks comprises encoded data and decoding data, such that said data object can be decoded from any combination of said redundant sub blocks of which the number corresponds to a predetermined multiple of a minimal spreading requirement, if the size of said data object is equal to or larger than said predetermined lower data object size threshold; and - said predetermined plurality corresponds to said desired spreading width, and each one of said replication copies comprises an exact copy of said data object, if the size of said data object is smaller than said predetermined lower data object size threshold. - receive a data object via a data communication network from an application; - disassemble said data object into a predetermined number of redundant sub blocks; and - store said predetermined number of said redundant sub blocks on a number of said storage elements being larger or equal to a desired spreading width, which consists of the sum of: - a minimal spreading requirement, corresponding to the minimal number of storage elements that must store sub blocks of said data object and are not allowed to fail; supplemented with - a maximal concurrent failures tolerance, corresponding to the number of storage elements that must store sub blocks of said data object and are allowed to fail concurrently; - each one of said redundant sub blocks comprises encoded data and decoding data, such that said data object can be decoded from any combination of said redundant sub blocks of which the number corresponds to a predetermined multiple of a minimal spreading requirement, if the size of said data object is equal to or larger than said predetermined lower data object size threshold; and - said predetermined plurality corresponds to said desired spreading width, and each one of said replication copies comprises an exact copy of said data object, if the size of said data object is smaller than said predetermined lower data object size threshold.