Initial commit
need refactor high priority