implement maintain(), make tick() private and call from maintain