create public interface and example use