initial prototype, no dispatcher