Refactored to improve encapulation and data hiding...