partially equiped with javascript