After refactoring. Seems more or less ok