Refactor & commenting