add failing test
use clone function
refactor properties and related methods