dinly core split into two files, one extending the other, for easier extensibility