terribly verbose reduce steps added