basic dependency system