Now there are few bugs here, but the core works.