Adding Behavioral / State impl and tests