added data access layer