initial tutorial implementation