Fixes #2, converted frontend to use KnockOut for UI handling.