А что плохого в "кривом", но работающем коде? У первопроходцев чаще всего получается "криво"