add top-down positioning; partially done in bottom-up