each component in own directory. resolves #1