Use type_info::size for storage, refactor storage