added some implementation to init