added features and finishing touches