code refactoring...
code refactoring... still incomplete!