Refactored and commented
New STuff