more functionality that needs fixing