Rewritten with NameSpaces and autoloader