Expertise | Software

Services

Design research icon
Innovation strategy icon
Inverted Color Branding Design Firm
Product Design Icon
UX UI Icon Invert Color Red
Inverted Color Engineering Icon
Inverted Color Product Development Icon

Markets

Medical Device Design Icon
Consumer Product Design Icon
CPG Design Icon
Industrial Design Icon
Consumer Durable Design Icon

Markets

Medical Device Design Icon

Medical

Consumer Product Design Icon

Consumer

CPG Design Icon

CPG

Industrial Design Icon

Industrial

Consumer Durable Design Icon

Durables

Services

Design research icon

Research

Innovation strategy icon

Innovation

Inverted Color Branding Design Firm

Branding

Product Design Icon

Design

UX UI Icon Invert Color Red

UX/UI

Inverted Color Engineering Icon

Engineering

Inverted Color Product Development Icon

Development

Expertise | Software

Services

Design research icon
Innovation strategy icon
Inverted Color Branding Design Firm
Product Design Icon
UX UI Icon Invert Color Red
Inverted Color Engineering Icon
Inverted Color Product Development Icon

Markets

Medical Device Design Icon
Consumer Product Design Icon
CPG Design Icon
Industrial Design Icon
Consumer Durable Design Icon

Markets

Medical Device Design Icon

Medical

Consumer Product Design Icon

Consumer

CPG Design Icon

CPG

Industrial Design Icon

Industrial

Consumer Durable Design Icon

Durables

Services

Design research icon

Research

Innovation strategy icon

Innovation

Inverted Color Branding Design Firm

Branding

Product Design Icon

Design

UX UI Icon Invert Color Red

UX/UI

Inverted Color Engineering Icon

Engineering

Inverted Color Product Development Icon

Development

Custom software development is an iterative process that uses the latest technology to meet user needs. Recent watershed technologies like AI/ML, IoT, Cloud, AR/VR, and Mobile have   created opportunities for innovation across all industries. At the same time, these technologies are challenging designers and software developers to find the right use cases. Finding the right use cases for software development requires an iterative development process, where developers gather stakeholder feedback, create need-based designs, gather more feedback, and implement it. This development process relies on our core competencies as a full-stack development firm, which allows us to build custom software holistically and efficiently.

RKS is a comprehensive software innovation, design, development, and engineering firm. Whether designing new consumer products and services or improving existing ones, we assist at all stages of a product’s life cycle. We use our advanced psycho-aesthetic methodology to solve complex problems that address design, development, and regulatory issues. Our cross-disciplinary specialists, researchers, designers, and engineers leverage their deep understanding of multiple industries and technologies to spark creative and innovative software solutions.

Our Clients

Key Development Technologies

The best new technology products synthesize new and emergent technologies. Choosing one technology over another is a prioritization of cost, quality, and functionality. Prioritization requires an understanding of the key technologies that are driving software product development. In the last decade, AI, Cloud, AR and VR, IoT, and Mobile have emerged as the defining development technologies. These technologies will also define the future of software development. These macro technologies are supported by the incredible growth of cloud services and solutions, which reduce the cost and increase the efficiency of development, compute, and storage. We have extensive experience using the latest languages, frameworks, and libraries as well as APIs and SDKs to create custom solutions to user needs. To deploy these libraries we leverage best-in-class IaaS and PaaS, and SaaS to provide scalable services for businesses and a seamless experience for users.

AI/ML Development

Artificial Intelligence (AI) and Machine learning (ML) and have been two of the most transformative technologies of the last decade. Using ML, some of the most innovative companies in the world have developed custom statistical models and predictive capabilities in language processing, image recognition, and personalization. These models and capabilities have delivered transformative solutions and services around the world. Underlying these capabilities are powerful libraries like TensorFlow, Keras, and PyTorch. Depending on the user needs and business cases, we have used both varying learning techniques. For personalization of mobile and web apps, we have developed custom supervised machine learning algorithms to understand correlations in customer behavior. For image recognition and body tracking we have used deep learning to deploy custom convolutional neural networks that can find patterns in unstructured data.

Cloud Development

Cloud services have fundamentally changed software development through exponential increases in compute availability and reduced costs of scale. These enablers can be seen driving the growth of web companies like Netflix, Google, and Amazon. Increasingly cloud services are also implementing security features and privacy once offered only by on-premise environments. Companies can now deploy fast, secure, and scalable services to their team and clients. As a result, most modern software is now developed and deployed on cloud services. We develop software with market leading IaaS and PaaS providers like AWS, Azure, and Google Cloud. We have implemented Natural Language processing with Amazon Lex, and AR/VR with Amazon Sumerian. In addition to IaaS and PaaS, we also integrate with world-class SaaS providers like Salesforce, Office 365, Box, Zen Desk, and DocuSign.

AR and VR Development

Augmented Reality (AR) and Virtual Reality (VR) are being used by all industries to enable virtual presence enhanced data access. These technologies have been transformational in healthcare, education, and aerospace, as well as in design and engineering. VR has allowed aerospace mechanics to train on virtual planes and students to be virtually present

as they visit museums across the world. AR is enabling app and software developers to use cameras to create a custom UI over real-time data. Because of their newness, AR and VR are being included in custom services and app deployments as opposed to the public web and websites. At the same time SDKs like iOS ARKit and ARCore have made AR/VR software development easier than ever. A company deploying these services should see them as an important part of long-term strategy and ROI.

IoT Development

IoT is changing the world in a subtle, yet profound way. Cell phones, vehicles, electronic appliances, and smart sensors contain sensors that can collect data, which can be uploaded to the cloud or directly exchanged with other connected devices. This data can be analyzed by companies to enhance their services, or create new solutions that deliver more value to their customers. As sensors, storage, and analytics become faster, cheaper, better, and more integrated, these IoT devices will have a significant impact on many aspects of our lives including how we live, drive, and farm animals and crops. As both a software and industrial product design and innovation firm, we consider ourselves IoT-first. Our product design process considers where and how our products need to collect and use data that will help companies, cities, or nonprofits operate more sustainably, effectively, and efficiently.

Mobile Development

Mobile software development through the web and apps continues to be as important as ever. More than 60% of internet users access the mobile internet, and mobile devices accounted for nearly half of all internet traffic in 2020. Today, the availability of the mobile app and the mobile web has produced a change in the way humans feel and experience computing. Computing is now carried everywhere in mobile phones and affects everything we do. The technology enabling this change has been a combination of front-end development languages like HTML5, CSS, and Javascript and back-end development languages like Python/Django that can link mobile software to supercomputer processing capabilities that drive user personalization and enhanced customer service. Changes in technology have also made cross-development easier, allowing a service or solution to be developed for both the web and and an app to look and feel the same to users on all devices.

Key Development Technologies

The best new technology products synthesize new and emergent technologies. Choosing one technology over another is a prioritization of cost, quality, and functionality. Prioritization requires an understanding of the key technologies that are driving software product development. In the last decade, AI, Cloud, AR and VR, IoT, and Mobile have emerged as the defining development technologies. These technologies will also define the future of software development. These macro technologies are supported by the incredible growth of cloud services and solutions, which reduce the cost and increase the efficiency of development, compute, and storage. We have extensive experience using the latest languages, frameworks, and libraries as well as APIs and SDKs to create custom solutions to user needs. To deploy these libraries we leverage best-in-class IaaS and PaaS, and SaaS to provide scalable services for businesses and a seamless experience for users.

AI/ML Development

Artificial Intelligence (AI) and Machine learning (ML) and have been two of the most transformative technologies of the last decade. Using ML, some of the most innovative companies in the world have developed custom statistical models and predictive capabilities in language processing, image recognition, and personalization. These models and capabilities have delivered transformative solutions and services around the world. Underlying these capabilities are powerful libraries like TensorFlow, Keras, and PyTorch. Depending on the user needs and business cases, we have used both varying learning techniques. For personalization of mobile and web apps, we have developed custom supervised machine learning algorithms to understand correlations in customer behavior. For image recognition and body tracking we have used deep learning to deploy custom convolutional neural networks that can find patterns in unstructured data.

Cloud Development

Cloud services have fundamentally changed software development through exponential increases in compute availability and reduced costs of scale. These enablers can be seen driving the growth of web companies like Netflix, Google, and Amazon. Increasingly cloud services are also implementing security features and privacy once offered only by on-premise environments. Companies can now deploy fast, secure, and scalable services to their team and clients. As a result, most modern software is now developed and deployed on cloud services. We develop software with market leading IaaS and PaaS providers like AWS, Azure, and Google Cloud. We have implemented Natural Language processing with Amazon Lex, and AR/VR with Amazon Sumerian. In addition to IaaS and PaaS, we also integrate with world-class SaaS providers like Salesforce, Office 365, Box, Zen Desk, and DocuSign.

AR and VR Development

Augmented Reality (AR) and Virtual Reality (VR) are being used by all industries to enable virtual presence enhanced data access. These technologies have been transformational in healthcare, education, and aerospace, as well as in design and engineering. VR has allowed aerospace mechanics to train on virtual planes and students to be virtually present as they visit museums across the world. AR is enabling app and software developers to use cameras to create a custom UI over real-time data. Because of their newness, AR and VR are being included in custom services and app deployments as opposed to the public web and websites. At the same time SDKs like iOS ARKit and ARCore have made AR/VR software development easier than ever. A company deploying these services should see them as an important part of long-term strategy and ROI.

IoT Development

IoT is changing the world in a subtle, yet profound way. Cell phones, vehicles, electronic appliances, and smart sensors contain sensors that can collect data, which can be uploaded to the cloud or directly exchanged with other connected devices. This data can be analyzed by companies to enhance their services, or create new solutions that deliver more value to their customers. As sensors, storage, and analytics become faster, cheaper, better, and more integrated, these IoT devices will have a significant impact on many aspects of our lives including how we live, drive, and farm animals and crops. As both a software and industrial product design and innovation firm, we consider ourselves IoT-first. Our product design process considers where and how our products need to collect and use data that will help companies, cities, or nonprofits operate more sustainably, effectively, and efficiently.

Mobile Development

Mobile software development through the web and apps continues to be as important as ever. More than 60% of internet users access the mobile internet, and mobile devices accounted for nearly half of all internet traffic in 2020. Today, the availability of the mobile app and the mobile web has produced a change in the way humans feel and experience computing. Computing is now carried everywhere in mobile phones and affects everything we do. The technology enabling this change has been a combination of front-end development languages like HTML5, CSS, and Javascript and back-end development languages like Python/Django that can link mobile software to supercomputer processing capabilities that drive user personalization and enhanced customer service. Changes in technology have also made cross-development easier, allowing a service or solution to be developed for both the web and and an app to look and feel the same to users on all devices.

Images of people developing software

Custom Software Development

Software development combines front-end engineering on the user-facing application and back-end engineering on the services and data that make the user-facing application possible. Full-stack software development combines both front-end and back-end engineering into one skillset. Our team of developers use their full-stack software development experience to create efficient and targeted applications to meet user needs. Unlike traditional analog product development, lean software development allows for more and more frequent user testing and validation of a product. This means that client and user input can be incorporated into successive improvements of the product before launch. Combined with full-stack development, this interactive and iterative process becomes more efficient where both the user-facing application and technology that supports it can be closely matched. In the end, full-stack software development means that our software is more efficiently built, and narrowly tailored to user’s needs.

Front-end Software Development

Front-end development produces the user-facing code, which creates what the user sees. As a result, front-end developers focus on user experience, and the technology they implement hinges on how well it will accomplish that efficiency, speed, and smooth functionality. Their responsibilities include ensuring that there are no errors or bugs on the front end, and that the design appears as it’s supposed to across various platforms and browsers. As a result, front-end development takes design creativity and deep technical experience. Our team of developers work closely with designers and users to create software that is based on user needs. Together they quantitatively and qualitatively identify requirements and provide recommendations for solutions. At the same time, our team of developers works with company and client stakeholders to make sure that we are meeting companies’ business goals, needs, and opportunities. Our team of developers have experience developing front-end experiences for different industries across a variety of common platforms across browsers and devices.

Back-end Software Development

Back-end software development creates the technology that powers the user-facing side of the software. Usually, the back end of a website or app consists of a server, an application, and a database, which include a mix of development services, algorithms, and APIs that enable additional functionality on the front end. Our backend team of developers use server-side software development languages like PHP, Ruby, Python, Java, and .Net, tools like MySQL, Oracle, and SQL Server, PHP frameworks like Zend, Symfony, and CakePHP, and software development languages like Python for data management. Like designers back-end developers want to create products that are efficient and well-suited to the purpose at hand. Because back-end software development can be a cost-center for the product or service, it’s important that development choices reflect clear needs. Before writing their code, our team of developers collaborate with our designers and business stakeholders to understand the business objectives. Our designers and developers then translate those business objectives and user needs into technical requirements for the most effective and efficient solution for architecting the technology.

Testing and Release Management

Testing and release management is the process of planning, scheduling, and controlling the development of the software product through

every stage, and testing and deploying future releases. Our software development testing process begins with the release of an MVP. Sometimes this MVP will be an alpha or beta release to an internal or carefully selected external population in order to generate user feedback. Depending on the business needs, this testing and release part of the development process is iterative and ends with the final release of the production software. Because products are often created for multiple platforms, this release is usually staggered. Using a staggered testing and release schedule allows our software development team to address any bugs to be fixed or features to be changed based on wider customer feedback.

Software Development Compliance

Software development compliance is the process that determines if software meets the compliance policy set by an organization or government body. In healthcare, this means working in a HIPAA compliant software development environment and utilizing back-end technologies to ensure privacy and anonymity. Even in industries without specific privacy or compliance legislation, most companies require strong data privacy protection and/or comply with internal company policies. Usually this means separating identifiable customer data from all other types. Compliance is an important issue during the design phase. It is equally important during software development, where sample data is often used and choices are made for the back-end.

Software Development Application Architecture

We combine our customer research into thoughtful application architecture. Application architecture is the set of techniques and principles that our team of developers use to create a well-structured application that meets user needs. At a high level application architecture is the overarching structure that defines how the code interacts with data and services to meet the user needs. It is also a long-term view or roadmap of how the software development process will result in a solution to meet user needs and designer goals. Some solutions call for a centralized architecture when all user needs happen at once, while other solutions require a more decentralized approach to meet user needs that vary over time or require large requests of data. The architecture includes both design and engineering decisions. Ultimately, the architecture provides the framework for prototyping and testing.

Software Development

Software development combines front-end engineering on the user-facing application and back-end engineering on the services and data that make the user-facing application possible. Full-stack software development combines both front-end and back-end engineering into one skillset. Our team of developers use their full-stack software development experience to create efficient and targeted applications to meet user needs. Unlike traditional analog product development, lean software development allows for more and more frequent user testing and validation of a product. This means that client and user input can be incorporated into successive improvements of the product before launch. Combined with full-stack development, this interactive and iterative process becomes more efficient where both the user-facing application and technology that supports it can be closely matched. In the end, full-stack software development means that our software is more efficiently built, and narrowly tailored to user’s needs.

Front-end Software Development

Front-end development produces the user-facing code, which creates what the user sees. As a result, front-end developers focus on user experience, and the technology they implement hinges on how well it will accomplish that efficiency, speed, and smooth functionality. Their responsibilities include ensuring that there are no errors or bugs on the front end, and that the design appears as it’s supposed to across various platforms and browsers. As a result, front-end development takes design creativity and deep technical experience. Our team of developers work closely with designers and users to create software that is based on user needs. Together they quantitatively and qualitatively identify requirements and provide recommendations for solutions. At the same time, our team of developers works with company and client stakeholders to make sure that we are meeting companies’ business goals, needs, and opportunities. Our team of developers have experience developing front-end experiences for different industries across a variety of common platforms across browsers and devices.

Back-end Software Development

Back-end software development creates the technology that powers the user-facing side of the software. Usually, the back end of a website or app consists of a server, an application, and a database, which include a mix of development services, algorithms, and APIs that enable additional functionality on the front end. Our backend team of developers use server-side software development languages like PHP, Ruby, Python, Java, and .Net, tools like MySQL, Oracle, and SQL Server, PHP frameworks like Zend, Symfony, and CakePHP, and software development languages like Python for data management. Like designers back-end developers want to create products that are efficient and well-suited to the purpose at hand. Because back-end software development can be a cost-center for the product or service, it’s important that development choices reflect clear needs. Before writing their code, our team of developers collaborate with our designers and business stakeholders to understand the business objectives. Our designers and developers then translate those business objectives and user needs into technical requirements for the most effective and efficient solution for architecting the technology.

Testing and Release Management

Testing and release management is the process of planning, scheduling, and controlling the development of the software product through every stage, and testing and deploying future releases. Our software development testing process begins with the release of an MVP. Sometimes this MVP will be an alpha or beta release to an internal or carefully selected external population in order to generate user feedback. Depending on the business needs, this testing and release part of the development process is iterative and ends with the final release of the production software. Because products are often created for multiple platforms, this release is usually staggered. Using a staggered testing and release schedule allows our software development team to address any bugs to be fixed or features to be changed based on wider customer feedback.

Software Development Compliance

Software development compliance is the process that determines if software meets the compliance policy set by an organization or government body. In healthcare, this means working in a HIPAA compliant software development environment and utilizing back-end technologies to ensure privacy and anonymity. Even in industries without specific privacy or compliance legislation, most companies require strong data privacy protection and/or comply with internal company policies. Usually this means separating identifiable customer data from all other types. Compliance is an important issue during the design phase. It is equally important during software development, where sample data is often used and choices are made for the back-end.

Software Development Application Architecture

We combine our customer research into thoughtful application architecture. Application architecture is the set of techniques and principles that our team of developers use to create a well-structured application that meets user needs. At a high level application architecture is the overarching structure that defines how the code interacts with data and services to meet the user needs. It is also a long-term view or roadmap of how the software development process will result in a solution to meet user needs and designer goals. Some solutions call for a centralized architecture when all user needs happen at once, while other solutions require a more decentralized approach to meet user needs that vary over time or require large requests of data. The architecture includes both design and engineering decisions. Ultimately, the architecture provides the framework for prototyping and testing.

Software Development Applications 

While new software can usually be developed with off-the-shelf technologies, each new product creates different software development challenges. In many cases, these are challenges we overcome using our deep experience in software development and engineering. In other cases, we rely on our industry experience and our human-centered design expertise. In every project we work with clients to understand the unique characteristics of the industry and the user and business requirements for that industry. We also work with clients to ensure that decisions during software development are consistent with the project goals. This consulting-based system ensures that our development decisions are consistent with user needs, business strategy, and industry practices. We develop software for consumer, enterprise/industrial, and medical industries, and also develop software products that blende and define new industries.

Consumer Software Development

Consumer software can reach millions of users and directly impact their everyday lives. It is often sold directly to consumers, and it can dramatically increase a consumer’s productivity, happiness, health, and connectedness. Our clients have put us to the test, challenging us to develop innovative and far-reaching consumer software. In one challenge, we developed a a real-time messaging app using augmented reality technology and real world positioning while supporting embedded media like photos and video. In another challenge, we built an avatar-based chat system capable of allowing for multiple inputs including speech and text while allowing responses to come seamlessly from both human and machine. We’ve also used augmented reality technology to enable users to virtually try on eyewear in real time and make purchases using their mobile phones. In all of these examples we developed the application architecture, front-end software development, including facial tracked 3D meshes for glasses try on, back-end software development, and testing and release management.

Enterprise and Industrial Software Development

Enterprise and Industrial software are increasingly becoming a source of competitive advantage for companies wanting to become more data-driven in their decision-making, leaner in their operations, and more selective in their human capital. Our clients have put us to the test, challenging us to use the latest technologies to create innovative solutions to these problems. In one challenge we developed an Android application to collect, analyze and upstream real time driving data, including GPS, inertial measurements, and multi camera video. Using this app, the client could become more data driven in selecting, managing, and retaining, their workforce. In this case we completed the application architecture and product design, and developed the full application and key features including social mechanics, messages, and AR stories, and posting of photos and videos.

Medical Software Development

Medical software has a web of stakeholders ranging from physicians to hospital administrators, to patients, to administrative agencies. As a result, it must be resilient and intuitive where a misplaced button or downtimes can cause personal injury or create liability. It must also be compliant with government regulations and strict data privacy provisions. Our clients have put us to the test, challenging us to develop leading medical software that address the dynamic data-privacy landscape. In one challenge, we developed a HIPAA compliant SAAS platform to diagnose and treat spinal health using advanced body scanning technology and proprietary machine learning algorithms. In another challenge, we developed an iOS application using peer-to-peer digital wallet technology to allow users to manage and share their digital personal health information. Other examples include a mobile app for on demand nurse practitioners, and an eldercare platform using a hybrid Salesforce and custom SAAS approach. For all of these solutions we completed all front and backend software development including tools to manage patient data and a mobile responsive app, as well as all testing and release management.

Open Innovation Software Development

The future hasn’t been written, and one size rarely fits all. We’re open to software development challenges that blend industries or create new ones. At the same time, we’re ready to use our team of software developers to take on big challenges that use the latest technologies to address the world’s most pressing problems like sustainability, climate change, and poverty. Our open innovation custom software development expertise draws from our decades of design, innovation, and development experience. This experience enables us to execute on creative software development projects that require uncertain solutions. We’re able to use the latest software development technologies like Augmented Reality SDKs, AI and ML, Natural Language Processing, Blockchain, IoT, and Cloud platforms such as AWS, Google Cloud, Azure, and Watson. We are at an incredible time in history where our ability to create solutions is limited only by our own imaginations.

Software Development Applications 

While new software can usually be developed with off-the-shelf technologies, each new product creates different software development challenges. In many cases, these are challenges we overcome using our deep experience in software development and engineering. In other cases, we rely on our industry experience and our human-centered design expertise. In every project we work with clients to understand the unique characteristics of the industry and the user and business requirements for that industry. We also work with clients to ensure that decisions during software development are consistent with the project goals. This consulting-based system ensures that our development decisions are consistent with user needs, business strategy, and industry practices. We develop software for consumer, enterprise/industrial, and medical industries, and also develop software products that blende and define new industries.

Consumer Software Development

Consumer software can reach millions of users and directly impact their everyday lives. It is often sold directly to consumers, and it can dramatically increase a consumer’s productivity, happiness, health, and connectedness. Our clients have put us to the test, challenging us to develop innovative and far-reaching consumer software. In one challenge, we developed a a real-time messaging app using augmented reality technology and real world positioning while supporting embedded media like photos and video. In another challenge, we built an avatar-based chat system capable of allowing for multiple inputs including speech and text while allowing responses to come seamlessly from both human and machine. We’ve also used augmented reality technology to enable users to virtually try on eyewear in real time and make purchases using their mobile phones. In all of these examples we developed the application architecture, front-end software development, including facial tracked 3D meshes for glasses try on, back-end software development, and testing and release management.

Enterprise and Industrial Software Development

Enterprise and Industrial software are increasingly becoming a source of competitive advantage for companies wanting to become more data-driven in their decision-making, leaner in their operations, and more selective in their human capital. Our clients have put us to the test, challenging us to use the latest technologies to create innovative solutions to these problems. In one challenge we developed an Android application to collect, analyze and upstream real time driving data, including GPS, inertial measurements, and multi camera video. Using this app, the client could become more data driven in selecting, managing, and retaining, their workforce. In this case we completed the application architecture and product design, and developed the full application and key features including social mechanics, messages, and AR stories, and posting of photos and videos.

Medical Software Development

Medical software has a web of stakeholders ranging from physicians to hospital administrators, to patients, to administrative agencies. As a result, it must be resilient and intuitive where a misplaced button or downtimes can cause personal injury or create liability. It must also be compliant with government regulations and strict data privacy provisions. Our clients have put us to the test, challenging us to develop leading medical software that address the dynamic data-privacy landscape. In one challenge, we developed a HIPAA compliant SAAS platform to diagnose and treat spinal health using advanced body scanning technology and proprietary machine learning algorithms. In another challenge, we developed an iOS application using peer-to-peer digital wallet technology to allow users to manage and share their digital personal health information. Other examples include a mobile app for on demand nurse practitioners, and an eldercare platform using a hybrid Salesforce and custom SAAS approach. For all of these solutions we completed all front and backend software development including tools to manage patient data and a mobile responsive app, as well as all testing and release management.

Open Innovation Software Development

The future hasn’t been written, and one size rarely fits all. We’re open to software development challenges that blend industries or create new ones. At the same time, we’re ready to use our team of software developers to take on big challenges that use the latest technologies to address the world’s most pressing problems like sustainability, climate change, and poverty. Our open innovation custom software development expertise draws from our decades of design, innovation, and development experience. This experience enables us to execute on creative software development projects that require uncertain solutions. We’re able to use the latest software development technologies like Augmented Reality SDKs, AI and ML, Natural Language Processing, Blockchain, IoT, and Cloud platforms such as AWS, Google Cloud, Azure, and Watson. We are at an incredible time in history where our ability to create solutions is limited only by our own imaginations.