everything except abstract