Migrated everything to kotlin