First implementation which completes the spec