Implement history as separate class