sample2 complete
 - use interface