observer skeleton