opaqueだとdialyzerの警告が大量に出たのでtypeに変更