todo unit tests
make radii relative to width instead of hardcoded