function canPurchase(address _owner, address _address, uint256 _tokens) public view returns(bool, bool, bool, bool) {
        uint256 _purchaseTimeout = store.getSetting("purchaseTimeout");
        uint256 _fee = _tokens * store.getSetting("purchaseFee") / store.getSetting("percentage");

        bool purchaseTimeoutPassed = ((_purchaseTimeout <= 0) || (block.timestamp - datesOfPurchase[_address] > _purchaseTimeout));
        bool tokensNumberPassed = (_tokens > 0);
        bool ownerBalancePassed = (store.getBalance(_owner) >= (_tokens + _fee));
        bool purchaseCapPassed = (store.getSetting("purchaseCap") <= 0) || (_tokens < store.getSetting("purchaseCap"));

        return (purchaseTimeoutPassed, ownerBalancePassed, tokensNumberPassed, purchaseCapPassed);
    }