fully implemented mode 2