moving some logic into Project