Setting crowdsale rate manually

Hi @bayram,

Whilst having internal state variables would make things easier, it would break encapsulation. I believe the code overriding functions using rate make it clearer what is being changed.

Good to hear that you have tests for your contract. A thorough test suite is very important. The following article on testing is worth a read: Test smart contracts like a rockstar

I recommend reading the following checklist for before an audit:

I found reading past audits very useful: https://blog.openzeppelin.com/security-audits/

Regards auditing, OpenZeppelin performs audits, see the website for details: https://openzeppelin.com/security-audits/