Change constructors to accept an eventual parent object(as does QObject)
refactor clone function