major updates to the functionallity