added change_limit and destroy methods, multiple refactorings