class Wallet {

    public Account getAccount(UscAddress addr) {
        synchronized (accessLock) {
            if (!accounts.containsKey(addr)) {
                return null;
            }

            if (unlocksTimeouts.containsKey(addr)) {
                long ending = unlocksTimeouts.get(addr);
                long time = System.currentTimeMillis();
                if (ending < time) {
                    unlocksTimeouts.remove(addr);
                    accounts.remove(addr);
                    return null;
                }
            }
            return new Account(ECKey.fromPrivate(accounts.get(addr)));
        }
    }

    public  Wallet(KeyValueDataSource keyDS);

}