database layer interface