use command pattern for setting properties