added reverse-and-add, some failed attempts at others