- make Device and Holder object contructors private, use create function instead