refactor constructor to support separate asset building