backward works; cleanup needed
a little bit cleanup
code cleanup
cleanup