full initialization