update with more functionality