Restruct, add extension interface