added initialize and cleanup