some fixes and optimisations. Most notably fixinf issues where initial constructor is unrecognized
Added nicer handling of redefinition of same toke or type