This should probably be a class