added shared components, some basic frameworking