added constructors for top-down and bottom-up development