finish pattern "strategy" and begini pattern "observer"
create new interface
create new interface