everything works as it should but not quite factored right