General purpose components framework