basic solver