working version. still needs a little polishing