Algy's refactoring & IDL(Item description language) first