First major commit with basic functionality