Remove dependency on 'derive' package and usage of CPP