major refactoring + history by object functionality