refactoring
talteen
updated to current status