with some additional features to make it more user-friendly