some ideas and new features have been added