dynamic init method
fix merge conflict