rewrite totally: remove reflection and customized classloading