first implementation (by angle, has not working yet)