diff --git a/lib/Slic3r/Fill.pm b/lib/Slic3r/Fill.pm
index 8e919b738..e3a447d75 100644
--- a/lib/Slic3r/Fill.pm
+++ b/lib/Slic3r/Fill.pm
@@ -56,7 +56,7 @@ sub make_fill {
     my $self = shift;
     my ($layer) = @_;
     
-    $_->layer($layer) for values %{$self->fillers};
+    $_->layer_id($layer->id) for values %{$self->fillers};
     
     Slic3r::debugf "Filling layer %d:\n", $layer->id;
     
diff --git a/lib/Slic3r/Fill/Base.pm b/lib/Slic3r/Fill/Base.pm
index 546d914ab..aa68e2989 100644
--- a/lib/Slic3r/Fill/Base.pm
+++ b/lib/Slic3r/Fill/Base.pm
@@ -4,7 +4,7 @@ use Moo;
 use Slic3r::Geometry qw(PI);
 
 has 'print'               => (is => 'rw');
-has 'layer'               => (is => 'rw');
+has 'layer_id'            => (is => 'rw');
 has 'max_print_dimension' => (is => 'rw');
 has 'angle'               => (is => 'rw', default => sub { $Slic3r::Config->fill_angle });
 
@@ -20,9 +20,9 @@ sub infill_direction {
     $rotate[1] = [ $self->max_print_dimension * sqrt(2) / 2, $self->max_print_dimension * sqrt(2) / 2 ];
     @shift = @{$rotate[1]};
     
-    if ($self->layer) {
+    if (defined $self->layer_id) {
         # alternate fill direction
-        my $layer_num = $self->layer->id / $surface->depth_layers;
+        my $layer_num = $self->layer_id / $surface->depth_layers;
         my $angle = $self->angles->[$layer_num % @{$self->angles}];
         $rotate[0] = Slic3r::Geometry::deg2rad($self->angle) + $angle if $angle;
     }