allow to change the type in runtime