designing dependency system