refactoring
before demo