detect columns
* Port rename * Update description * Fix fmt issues * Refactor the code a bit and move things around