changed database package to use abstract class and methods. this enforces subclassing _Database.class