improve some code; add admin function;