Add item implemented + some refactoring