full working
new changes (without 3,6)