recursive UP and down finished; buggy;