updated, add more features