contract LockableToken is Admined {

    event LockStatus(address _target, uint _timeStamp);

    mapping (address => uint) internal locked; //public need to be reviewed
    bool internal globalLock = true;

    /**
    * @notice _target - address you want to lock until _timeStamp - unix time
    */
    function setLocked(address _target, uint _timeStamp) public onlyAdmin returns (bool) {
        locked[_target]=_timeStamp;
        emit LockStatus(_target, _timeStamp);
        return true;
    }

    /**
    * @notice function allows admin to unlock tokens on _target address
    */
    function unLock(address _target) public onlyAdmin returns (bool) {
        locked[_target] = 0;
        return true;
    }

    /**
    * Allow admin to unlock everything
    */
    function AllUnLock() public onlyAdmin returns (bool) {
        globalLock = false;
        return true;
    }

    /**
    * Allow admin to lock everything
    */
    function AllLock() public onlyAdmin returns (bool) {
        globalLock = true;
        return true;
    }

    /**
    * Return state of globalLock
    */
    function isGlobalLock() public view returns (bool) {
        return globalLock;
    }

    /**
    * @notice Getter returns false if tokens are available and true if
    *               unavailable
    */
    function isLocked(address _target) public view returns (bool) {
        if(locked[_target] > now){
            return true;
        } else {
            return false;
        }
    }
}
function unLock(address _target) public onlyAdmin returns (bool) {
    locked[_target] = 0;
    return true;
}

/**
 * @notice function allows admin to unlock tokens on _target address
 */