abstract class & autoloader

from dev to master