database abstruction layer.