implement state
new class implementation