A method for managing storage of one or more data blocks in a programmable data storage device, comprising: providing a data storage controller comprising at least one processor configured to control configuration of said one or more data blocks for said storage of said one or more data blocks in said programmable data storage device; characterized by the steps of: partitioning each of said one or more data blocks comprising a plurality of bits into a plurality of sub data blocks by said data storage controller based on one or more index value descriptors, wherein each of said sub data blocks comprises a distinct sequence of a number of said bits and wherein the index value descriptor is a function that defines a sequence of numbers that determines the order of arrangement of bits extracted from the data block for generating bit streams for sub data blocks; generating transition vectors from each of said sub data blocks by applying one or more transition functions on said each of said sub data blocks by said data storage controller, wherein said transition vectors constitute a transition set for said each of said sub data blocks; encoding one of said transition vectors in said transition set for said each of said sub data blocks by said data storage controller for obtaining a residual sub data block comprising a reduced number of said number of said bits for said each of said sub data blocks, resulting in increased bit space for accommodating parity bits and error correction bits; and generating a composite data block by merging said residual sub data block of said each of said sub data blocks by said data storage controller, wherein said composite data block comprises said increased bit space provided by each said residual sub data block, and wherein said composite data block is configurable for writing a generated composite data block to one or more of a plurality of regions in said programmable data storage device free from a disturbance caused by a write operation to each of another one or more of said regions in said programmable data storage device. partitioning each of said one or more data blocks comprising a plurality of bits into a plurality of sub data blocks by said data storage controller based on one or more index value descriptors, wherein each of said sub data blocks comprises a distinct sequence of a number of said bits and wherein the index value descriptor is a function that defines a sequence of numbers that determines the order of arrangement of bits extracted from the data block for generating bit streams for sub data blocks; generating transition vectors from each of said sub data blocks by applying one or more transition functions on said each of said sub data blocks by said data storage controller, wherein said transition vectors constitute a transition set for said each of said sub data blocks; encoding one of said transition vectors in said transition set for said each of said sub data blocks by said data storage controller for obtaining a residual sub data block comprising a reduced number of said number of said bits for said each of said sub data blocks, resulting in increased bit space for accommodating parity bits and error correction bits; and generating a composite data block by merging said residual sub data block of said each of said sub data blocks by said data storage controller, wherein said composite data block comprises said increased bit space provided by each said residual sub data block, and wherein said composite data block is configurable for writing a generated composite data block to one or more of a plurality of regions in said programmable data storage device free from a disturbance caused by a write operation to each of another one or more of said regions in said programmable data storage device.