implement moves#summary lazily