init
re-design parameter list