refactored init start destroy methods