Initial commit. Do not use this version yet. It is still buggy.