some fixes, `else` support