Initial implementation... still buggy.

Changes