cleaner constructor interface
destructor added