this stuff needs to be fixed