Refactor and organisation
Large refactor/cleanup for MVVM design pattern