implements autoloader and exceptions