add in advanced features and polish it up a little