Final Final Version

Proper design