implemented basic software architecture