totally rewrite: remove reflaction and customized classloading