Starts working further refactor needed