Whole program redesigned
Merge branch 'new_interface'