A lot of improvment, refactoring and feature development