finishing straight method
finishing recursive method