Implement the proposed methods + overall cleanup