major refactor towards autoload