updating the basics to the system, adding new functionality and refactoring code