Repetitions 1.82


Overview

Repetitions is a cross-platform spaced repetition system (SRS), an intelligent flashcard application that makes learning and memorization easy. An SRS optimizes your learning process by using a sophisticated algorithm that schedules the best time a card should be displayed. Essentially, difficult to remember cards appear for review more often than easy to remember cards so you don't waste time on things you already know.

It's a clean, simple, and easy to use application that allows you to study and synchronize your flashcards across multiple desktop computers and mobile devices.

Now you can study anytime, anywhere with Repetitions!


What's New In 1.82?

For a detailed summary of what's new in this version of Repetitions, click here.


Getting Started

New Users

A spaced repetition system (SRS) is a proven and effective tool that makes learning and memorization easier. Whether you're learning a new language, studying for tests or exams, or need to remember things in your everyday life, an SRS can help you do these things more quickly and efficiently. An SRS is similar to traditional flashcard applications, but it's much smarter. With an SRS, you'll grade yourself on how well you answered a question, which will then be used to determine the best time to display a card again for review. Each card will appear at scheduled intervals that are frequent enough so that you don't forget, but not too often that you waste time. As a result, your learning process is optimized through this spacing effect and you'll soon be able to retain vast amounts of information in your long term memory.

Repetitions is a clean, simple, and easy to use spaced repetition flashcard application that doesn't get in your way. Originally written as a companion to Mnemosyne, the goal of Repetitions now is to allow you to study and synchronize your flashcards easily across multiple platforms. Repetitions uses the same algorithm as Mnemosyne, which uses a variant of the SuperMemo SM-2 algorithm.

If you've just discovered the desktop version of Repetitions and also want to learn on the go, download the mobile version of Repetitions, currently available on iOS, Android, and BlackBerry 10.

If you've just downloaded the mobile version of Repetitions and also want to study on your desktop or laptop computer, download the desktop version for Windows, Mac OS X, and Linux.

Both the desktop and mobile versions of Repetitions work well as standalone applications, but they work even better when used together as you can seamlessly sync your databases to study anywhere using the cloud synchronization feature. You'll need a Repetitions Online account to use cloud synchronization. Sign up for a free account. If you prefer, you can also sync from one device to another over your local area network.

In addition, you can now study online using the full-featured web version of Repetitions, which has a similar interface and features as the desktop version. The web version is also tied to the Repetitions cloud servers, so if you use cloud synchronization, you'll have access to all your existing flashcards through the web. Any changes you make on the web will be automatically pushed to your devices the next time you sync. You'll need a Repetitions Online account to study online. Sign up for a free account.

If you've never used a spaced repetition flashcard application before, take a moment to read through this guide to familiarize yourself with Repetitions. If anything is unclear to you, feel free to post a question on the official Google Groups for Repetitions or send an e-mail to support@repetitionsapp.com.


Existing Users

As an existing user, you're probably familiar with everything already, so you'll most likely want to start with reading What's New?. If anything is unclear to you, feel free to post a question on the official Google Groups for Repetitions or send an e-mail to support@repetitionsapp.com.


Importing Databases

Since Repetitions uses its own .srs database file format, you need to convert any existing databases using the desktop version of Repetitions before you can begin using them. Currently, the desktop version supports importing Mnemosyne 1.x Databases (*.mem), Mnemosyne 1.x XMLs (*.xml), Mnemosyne 2.x Databases (*.db), Anki 2.x Databases (*.anki2) as well as text files and copy and paste data, allowing you to import cards from other sources.

To import a database, start Repetitions and on the application menu, click on File and then Import. The Import window will appear, allowing you to select the format type and file you wish to import.

If you select Text File or Copy and Paste Data, additional options will appear allowing you to specify which characters separate questions, answers, and cards in the text file or copy and paste data. If you select Copy and Paste Data, a text box will appear in place of the file selection, allowing you to copy and paste or enter data.

You have the option to create a new database or add cards to the currently opened database. If the cards to be imported don't have a category, you can specify the category in which you wish to place them. You also have the option to reset the learning data if applicable.

Once you've set your desired options and selected a file or entered data, click on OK to import. If you selected Create New Database, a file dialog will appear, allowing you to select the location and enter a name for the new database, which will be opened automatically once importing is complete.


Exporting Databases

Using the desktop verison of Repetitions, you can export your databases to Repetitions databases, Mnemosyne 1.x databases, Mnemosyne XMLs, text files, or copy and paste data at any time.

First, open an existing .srs database you would like to export. Next, in the application menu, click on File and then Export. The Export window will appear, allowing you to select the export format type.

If you select Text File or Copy and Paste Data, additional options will appear allowing you to specify which characters you would like to use to separate questions, answers, and cards in the text file or copy and paste data.

You have the option to only export cards in certain categories as well as reset the learning data (if the export format you choose stores learning data). You can also flip the question and answer of each card on export.

Once you've selected your desired options and categories, click on OK to export. If you are exporting as a file, a dialog will appear, allowing you to select the location and enter the file name for the exported database. If you selected Copy and Paste Data, a window with a text box containing the exported text will appear, allowing you to copy and paste.


Creating New Databases

To create a new database on the desktop version of Repetitions, click on File and then New. A file dialog will appear, allowing you to enter the file name you would like to use as well as select the location you wish to save the new database. Once you have entered a name and selected a location, click on Save and a new .srs database will be created.

To create a new database on the mobile version of Repetitions, press the Open button to enter the Open view screen and then press the New button. A dialog will appear, allowing you to enter a name for the new database. Once you have entered a name, press OK and a new .srs database will be created.


Adding Cards

To add cards on the desktop version of Repetitions, click on the Add Card button on the tool bar and the Add Card window will appear. Alternatively, you can use the Import feature to quickly add cards from other databases, text files, or using the copy and paste data option.

To add cards on the mobile version of Repetitions, press the Add Card button to enter the Add Card view screen.

Once you've selected or added a category and entered a question and answer, you can add the card by assigning it an initial grade. Use the following as a guideline for selecting an intial grade for your card:

  • Grade 0: You have not memorized the card yet.
  • Grade 1: You are beginning to memorize the card, but not quite yet.
  • Grade 2: You just memorized the card for the first time.
  • Grade 3: You have memorized the card, but it requires much effort and some time to get the correct answer.
  • Grade 4: You have memorized the card and it doesn't take too much effort or time to get the correct answer.
  • Grade 5: You have memorized the card perfectly.

By default, duplicate questions or answers with existing cards are not allowed. You can allow duplicates in the Settings.

You can also add a vice versa card, which will add another card with the question and answer reversed for the card you are about to add. Simply click on the Add Vice Versa check box or press the Add Vice Versa button before you add the card on the desktop and mobile version respectively.

On the desktop version of Repetitions, there are also keyboard shortcuts in the Add Card window to make it easier for you to enter a large number of cards without using the mouse. When you're ready to add a card, simply hold down Ctrl ( on a Mac) and press the grade number to assign an initial grade to a card (Ctrl+0, Ctrl+1, Ctrl+2, Ctrl+3, Ctrl+4, and Ctrl+5). While adding cards, you can also bring up the add image, add sound, and preview windows by using the keyboard shortcuts Ctrl+I, Ctrl+S, and Ctrl+P respectively in addition to clicking the buttons at the bottom of the window.


Three-Sided Cards

You can also add three-sided cards, which are typically used for language learning. Studying a foreign language often involves learning three components: the written form, the pronunciation, and the translation. When you add a three-sided card, two cards are created.

On one card, the written form will be used for the question and the pronunciation with the translation will used for the answer.

  • Q: Written Form
  • A: Pronunciation + Translation

On the other card, the translation will be used for the question and the written form with the pronunciation will be used for the answer.

  • Q: Translation
  • A: Written Form + Pronunciation

You can add three-sided cards by checking Three-Sided Card check box on the desktop version or by entering the Add Three-Sided Card view screen by pressing the Add Three-Sided Card button in the Add Card view screen on the mobile version.


Formatting Cards

Repetitions supports cards formatted with HTML tags, which allows you to change the look and feel of your cards however you wish.


Adding Images

To add images on the desktop version of Repetitions, click on the Add Image button or use the keyboard shortcut Ctrl+I (⌘+I on a Mac). A file dialog will appear, allowing you to select the image you wish to add. Once you've selected an image, click on OK to add the image. Relative paths will be used if an image path is in the same folder as the database.

To add images on the mobile version of Repetitions, press the Add Image button. An Add Image view screen will appear, allowing you to select the image you wish to add. Once you've selected an image, press either the Add To Question or the Add To Answer button to add the image.

You can also manually add an image to a question or answer using the <img> HTML tag. For example, if you wish to use the file "image.jpg", simply enter <img src="image.jpg">.

Note that you don't need to worry about the paths of your images in the mobile version of Repetitions as it will automatically translate the paths for you. Your existing image paths will be unaffected so that you can return to studying on your computer without any disruptions.

To learn how to transfer your images to the mobile version of Repetitions, see the section on Syncing.


Adding Sounds

To add sounds on the desktop version of Repetitions, click on the Add Sound button or use the keyboard shortcut Ctrl+S (⌘+S on a Mac). A file dialog will appear, allowing you to select the sound you wish to add. Once you've selected an sound, click on OK to add the sound. Relative paths will be used if a sound path is in the same folder as the database.

To add sounds on the mobile version of Repetitions, press the Add Sound button. An Add Sound view screen will appear, allowing you to select the sound you wish to add. Once you've selected an sound, press either the Add To Question or the Add To Answer button to add the sound.

You can also manually add a sound to a question or answer using the <sound> tag. For example, if you wish to use the file "sound.mp3", simply enter <sound src="sound.mp3">.

Note that you don't need to worry about the paths of your sounds in the mobile version of Repetitions as it will automatically translate the paths for you. Your existing sound paths will be unaffected so that you can return to studying on your computer without any disruptions.

To learn how to transfer your sounds to the mobile version of Repetitions, see the section on Syncing.


Adding Mathematical Formulas

Repetitions supports displaying mathematical formulas with LaTeX and MathML using MathJax. You can enable LaTeX and MathML Support in the Settings.


Learning

When learning a new card, you should give it a grade of 0 if you have not memorized it yet and a grade of 1 if you are beginning to memorize it. Once you have memorized a card for the first time, you should give it a grade of 2.

When reviewing scheduled cards, use the following as a guideline for grading your cards:

  • Grade 0: Incorrect Answer -- you've forgotten the card completely.
  • Grade 1: Incorrect Answer, but you recall it after seeing the correct answer.
  • Grade 2: Correct Answer, but you barely got it and it took a long time.
  • Grade 3: Correct Answer, with much effort and some time.
  • Grade 4: Correct Answer, with a little bit of effort and time.
  • Grade 5: Correct Answer, without any difficulties.

NOTE: If you've forgotten a scheduled card, it is recommended that you give it a grade of 0. After completing the review of scheduled cards, Repetitions will return to learning not memorized cards and you will see the card that you graded 0 again. Once you've decided that you re-memorized this card, it is recommended that you give it a grade of 2.

If you make a mistake while grading a card, you can undo the last graded card by pressing the Undo button on the tool bar or use the keyboard shortcut Ctrl+Z (⌘+Z on a Mac) on the desktop version of Repetitions. To undo a card on the mobile version of Repetitions, press the Open button to enter the Open view screen and an Undo button will appear on the bottom right corner of the screen.

Based on the grade you've assigned a card, Repetitions will schedule when the card will appear again for review. It is recommended you review your cards on a daily basis.

When you've finished reviewing all the scheduled cards for the day, you are done. You can now continue learning cards that you have not memorized yet. If you've memorized all the cards in your database, you have the option to Learn Ahead Of Schedule if you wish (although, this is generally not recommended), which will advance to the next earliest day with scheduled cards. A new day begins at 3:00 AM.

If you wish to continue studying your cards without affecting your statistics, instead of learning ahead of schedule, you should use the Review Mode.

The desktop version of Repetitions also has keyboard shortcuts for when you are learning or studying cards. To show or hide answers, press the Enter key or Space Bar. To grade cards, simply use the number keys from 0 to 5.


Editing Cards

To edit cards on the desktop version of Repetitions, click on the Edit Card button on the tool bar and an Edit Card window will appear. While editing a card, you can also bring up the add image, add sound, preview, statistics, and reset windows by using the keyboard shortcuts Ctrl+I, Ctrl+S, Ctrl+P, Ctrl+S, and Ctrl+R respectively ( on a Mac).

To edit cards on the mobile version of Repetitions, press the Edit Card button to enter the Edit Card view screen.

You can view the Statistics for the card , Reset the learning data for the card , as well Preview the card .


Deleting Cards

To delete the current card displayed on the desktop version of Repetitions, click on the Delete Card button on the tool bar or the Delete key on your keyboard.

To delete the current card displayed on the mobile version of Repetitions, press the Delete Card button .


Editing Databases

To edit databases on the desktop version of Repetitions, click on the Edit Database button on the tool bar and the Edit Database window will appear.

To edit databases on the mobile version of Repetitions, press the Edit Database button to enter the Edit Database view screen.

From here, you can Search for a card, Edit a card , Preview a card , view the Statistics for a card , Reset the learning data for a card , or Delete a card . On the desktop version, you can change the category of a card by selecting a card and clicking Category. Also note on the desktop version that multi-selection is allowed so that you can change the category, reset the learning data, or delete multiple cards at once.

If you want to reset learning data for the entire database, on the application menu, click on File and then Reset for the desktop version. On the mobile version, press the Open button and then press Reset. Note that resetting the learning data is an action that cannot be undone, so be certain before you proceed.


Editing Categories

To edit databases on the desktop version of Repetitions, click on the Edit Categories button on the tool bar and the Edit Categories window will appear. From here, you can Enable or Disable, Rename, or Delete Categories. You can also enable or disable categories by clicking on the checkbox beside a category. Note that multi-selection of categories is allowed so that you can enable or disable multiple categories at once.

To edit categories on the mobile verison of Repetitions, press the Settings button to enter the Settings view screen and then press the Edit Categories tab. In the Edit Categories tab, you can enable or disable categories by tapping on the name of the category.


Settings

To change settings on the desktop version of Repetitions, click on Edit and then Settings. The Settings window will appear.

To change settings on the mobile verison of Repetitions, press the Settings button to enter the Settings view screen.

From here, you'll be able to change the Font Settings for the questions and answers of your cards. You can change the Text Align of text to left, center, or right aligned and the Vertical Align of text to top or middle. In addition, you can set the Text Direction to right-to-left for displaying languages such as Arabic or Hebrew.

On the mobile version of Repetitions, you can change the Foreground and Background color of cards to a white and black color scheme instead of the default black and white color scheme. This feature may be expanded in the future.

You can Allow Duplicates so that you can add cards that have same question or answer as existing cards.

The Grade 0 Cards In Hand setting determines how many new cards you wish to learn at any given moment, so that you aren't overwhelmed with too many new cards all at once.

By default, new cards will generally appear in the same order you added the cards. You can select Learn New Cards In Random Order so that new cards appear randomly instead.

By default, you have to work through scheduled cards for the day before continuing on to learning cards that you haven't memorized yet, which may not be practical if you have accumulated a large number of scheduled cards. You can opt to Learn New Cards First, which will allow you to view not memorized cards before scheduled cards.

The Review Mode determines which type of cards you want to display in the Review window or view screen. You have the option of reviewing memorized cards, not memorized cards, all cards, or cards with a specific grade.

By default, cards in Review Mode will generally appear in the same order you added the cards. You can select Review Cards In Random Order so that the cards appear randomly instead.

Selecting LaTeX and MathML Support will allow the display of mathematical formulas with LaTeX and MathML.

The Flip Cards feature will display questions and answers in reverse order. This is done during run time and does not modify the questions or answers in your database.

The Pinyin Tone Marks feature converts pinyin with tone numbers into pinyin with tone marks.

The Fast Format allows you to easily format text in bold, italics, red, gray, blue, and green. Enclose text using * for bold, _ for italics, ` for red, `` for gray, # for blue, and ## for green.

*bold* bold

_italics_ italics

`red` red

``gray`` gray

#blue# blue

##green## green


NOTE: There is currently a limitation where LaTeX and MathML Support cannot be used in conjunction with Fast Format.

You can restore the default settings used by Repetitions by pressing the Defaults button.


Viewing Statistics

To view statistics on the desktop version of Repetitions, click on the Statistics button on the tool bar and a Statistics window will appear.

To view statistics on the mobile version of Repetitions, press the Statistics button to enter the Statistics view screen.

From the Schedule tab, you can view the number of cards scheduled for the upcoming week.

From the Grades tab, you can view the number and percentage of cards in each grade.

From the Categories tab, you can view the number of cards in each category.

From the Current Card tab, you can view statistics for the current card.


Review Mode

In Review Mode, you can go through and study your cards like a traditional flashcard application without affecting the card statistics. This is useful for when you are done your scheduled cards for the day and you don't have any more cards to learn.

To enter Review Mode on the desktop version of Repetitions, click on the Review button on the tool bar and a Review window will appear.

To enter Review Mode on the mobile verison of Repetitions, press the Review button to enter the Review view screen.

The desktop version of Repetitions also has keyboard shortcuts for when you are reviewing cards. To show the answer to a card or go to the next card, press the Enter key or Space Bar.


Syncing

Syncing your databases, images, and sounds with Repetitions is simple and it just works. You can keep all your devices in sync literally with the push of a button. Repetitions also supports the merging of your databases, so you are free to add cards, edit your database, or study in more than one place at the same time without ever worrying about losing any of your changes when you sync.

There are two ways to sync your files: using cloud synchronization or syncing from one device to another over your local area network.

If you prefer, you can also copy your files manually.


Cloud

You can store your databases, images, and sounds online in the cloud and have Repetitions on all your devices push and pull data from the cloud server. Syncing with the server is safe and secure as an encrypted connection is established.

By storing your data in the cloud, you'll have access to all your existing flashcards and be able to study online using the web version of Repetitions. Any changes you make on the web will be automatically pushed to your devices the next time you sync.

You'll need a Repetitions Online account to use cloud synchronization. Sign up for a free account if you haven't done so already.

To begin syncing with the cloud, you must select the Cloud sync option in the Sync Settings and enter your Repetitions Online username and password. On the desktop version of Repetitions, you can open the Sync Settings window by clicking on the Edit menu and then Sync Settings. On the mobile version, press the Settings button to enter the Settings view screen and then press the Sync Settings tab.

From the Sync Settings, you also have the option to enable or disable syncing, choose whether to sync with the cloud server automatically when you start or exit, and ignore images and sounds if you don't want images or sounds to be transferred during a sync.

On the desktop version of Repetitions, you need to select the files you want to keep in sync by clicking on the Edit menu and then Sync Files. The Sync Files window will appear, which will allow you to select databases, images, and sounds through the Databases, Images, and Sounds pages.

Whenever you want to push or pull changes from the cloud server, simply click on the Sync button on the tool bar of the desktop version or press the Sync button on the mobile version. By default, Repetitions will attempt to sync with the cloud server when you start the application. You can also tell Repetitions to sync when you exit. Both sync on startup and exit are optional and can be configured in the Sync Settings.

On the desktop version of Repetitions during syncing, if a file doesn't exist yet, you will be prompted with a file dialog to select the location you wish to store new files. You have the option to Cancel if you do not wish to save the files. Any new files saved will be added to the list of files to keep in sync automatically. On the mobile version of Repetitions, all files are stored in the same folder, so you will not be prompted when new files are being copied to your device.

During syncing, you don't have to worry about closing any databases you have opened in Repetitions. An opened database will be updated and refreshed automatically once syncing is complete.

If you no longer wish to sync certain files, you must remove them from the list of files to sync in the Sync Files window on the desktop version and delete the files on the mobile version. You must also delete the files from the cloud server through the web version of Repetitions so that they don't get pushed to your devices again.


Local Area Network (LAN)

Before you can begin syncing from one device to another over your local area network, you must select the Local Area Network (LAN) sync option and specify a username and password to be used on all your computers and devices that run Repetitions in the Sync Settings. On the desktop version of Repetitions, you can open the Sync Settings window by clicking on the Edit menu and then Sync Settings. On the mobile version, press the Settings button to enter the Settings view screen and then press the Sync Settings tab.

From the Sync Settings, you also have the option to enable or disable syncing as well as the ability to change the port number to sync on another port and ignore images and sounds if you don't want images or sounds to be transferred during a sync.

On the desktop version of Repetitions, you need to select the files you want to keep in sync by clicking on the Edit menu and then Sync Files. The Sync Files window will appear, which allow you to select databases, images, and sounds through the Databases, Images, and Sounds pages.

Simply connect both computer(s) and/or device(s) to the same local network. Mobile users will need to connect to their local network using Wi-Fi. Start Repetitions on both sides and then just click on the Sync button on the tool bar of the desktop version OR press the Sync button on the mobile version and the two will automatically connect with each other and synchronize all your files.

If you are syncing between a computer and a mobile device such as a phone or tablet, it is recommended that you initiate syncing from the mobile device by pressing the Sync button .

On the desktop version of Repetitions during syncing, if a file doesn't exist yet, you will be prompted with a file dialog to select the location you wish to store new files. You have the option to Cancel if you do not wish to save the files. Any new files saved will be added to the list of files to keep in sync automatically. On the mobile version of Repetitions, all files are stored in the same folder, so you will not be prompted when new files are being copied to your device.

During syncing, you don't have to worry about closing any databases you have opened in Repetitions. An opened database will be updated and refreshed automatically once syncing is complete.

If you no longer wish to sync certain files, you must remove them from the list of files to sync in the Sync Files window on the desktop version and delete the files on the mobile version.


Troubleshooting

By default, synchronization uses port 8080, so make sure you allow that port for Repetitions if you have any firewalls on your computer. Also, ensure there aren't any other applications running on your computer or device that are listening on port 8080. Alternatively, you can change the port number in Edit Sync. Ports 49152 to 65535 are generally available for use as long as other applications are not using any of them.

If nothing happens when you press Sync, try again on the same computer or device OR try pressing Sync on the other computer or device. If you are still unable to sync, try closing and restarting Repetitions on both sides and try syncing again. Sometimes, it also helps to try restarting your Wi-Fi router.


Additional Notes

Cloud synchronization is now the preferred method of syncing as it is more reliable than syncing over the local area network.

Ensure the date and time on all your computers and devices are relatively in sync. If the time is not set properly on all your computers and devices, you may experience delayed updates or unexpected behaviour when syncing. Also, try to avoid making changes to the same database on different devices in a relatively close window of time.

A database with the same name that was created in two different places are not considered to be the same database and will not be synced. Repetitions will simply skip syncing for that database.

If you made changes to the same component of a card in two different places, the last modified change will be used when merging. For example, if you graded a card on your computer, but later graded the same card on your phone, the card will end up with the grade from your phone after syncing.

Each card has four components: the category, question, answer, and the learning data associated with the card. Currently, Repetitions treats these as separate components, so if you modify different parts of a card in two different places, syncing will result in merging the changes together. For example, if you changed the question of a card on your computer and changed the answer of the same card on your phone, the card will end up with the new question and new answer after syncing.


Manually Transferring Files

If you wish, you can copy your databases, images, and sounds manually to another computer or device.

On the iOS version of Repetitions, you can use the iTunes File Sharing feature to copy databases, images, and sounds into the Documents folder to and from your device.

On the Android version of Repetitions, your databases are located in the "Repetitions" folder in your home directory. Images and sounds are stored in the folders "Repetitions/Images" and "Repetitions/Sounds" respectively.

On the BlackBerry 10 version of Repetitions, your databases are located in the "documents/Repetitions" folder in your home directory. Images and sounds are stored in the folders "photos/Repetitions" and "voice/Repetitions" respectively.


Fullscreen Mode

Fullscreen Mode provides the ability for the question and answer to occupy the enter window or screen, which can be useful for flashcards with lots of text or images.

On the desktop version of Repetitions, you can enter Fullscreen Mode by pressing F11. Pressing F11 again will exit Fullscreen Mode.

On the mobile version of Repetitions, cards can be viewed in Fullscreen Mode in both portrait and landscape orientations.

On the iPhone and iPod touch version of Repetitions, to enter fullscreen mode in portrait orientation, press the Fullscreen button . To exit fullscreen portrait mode, tap on Close in the top right corner. To enter fullscreen mode in landscape orientation, tilt your device to a landscape orientation. To exit fullscreen landscape mode, tilt your device back to a portrait orientation.

On the iPad version of Repetitions, you'll notice you can study freely in portrait or landscape orientations. To enter fullscreen mode, press the Fullscreen button . You will enter either fullscreen portrait or landscape mode depending on the current orientation of your iPad. To exit fullscreen mode, press the Close button in the top right corner.

On the Android and BlackBerry 10 versions of Repetitions, to enter fullscreen portrait mode, press the Fullscreen button . To enter fullscreen mode in landscape orientation, tilt your device to a landscape orientation while in fullscreen portrait mode. To exit fullscreen mode, tap on Close in the top right corner.



Copyright © 2009-2016 Paul Tsai. All rights reserved. Terms of Use | Privacy Policy