It's better to move implementation to cpp file