still needs polish but everything is there...