added private constructer
interface over implementation