Layer keyframes

Kevin - can I get your thoughts?
Still to do:
- small cleanups based on your feedback
- rebase