Non-fungible tokens (NFTs) are all the rage these days, but their current manifestation (ERC721) is inefficient. It is not possible to move multiple tokens at the same time or package multiple tokens for e.g. deposit into a plasma child chain.
The following is a new design for an NFT token that allows aggregation of assets. The rest of the functionality can be inherited from ERC721.
contract NFT {
tokens mapping(address => mapping(bytes32 => uint));