Extract purely functional part of error checking
Use new pure checking
Move compiler-independent part to separate module
Merge branch 'feat/decoupling'
Make private members local
Bump project version to 0.3.1