Refactoring
New design was implemented