adding final version. still could use some tweaks