added DAL using interfaces