Add position information, allow negative charges to be placed.
Simplify coordinates handling
Reorder code.
Add field caching.