totally rewrite: remove reflection and customized classloading