update internal state abstraction