improved design, added amounts, refactoring