changed goenocean to use interfaces instead