implemented observer
implemented state
added empty state, no impl