implemented reverse