add editable property
add test for editable prop
adding business rules for Repeat
adding a source id getter to avoid breaking Liskov