Rewritten 
 * Data Access Layer
 * Service Layer