Simplify smart_ptr architecture, first steps