abstract class & autoloader